upgrade.dart 1.38 KB
Newer Older
1 2 3 4 5 6 7
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'dart:async';

import '../artifacts.dart';
8
import '../base/globals.dart';
9 10
import '../base/process.dart';
import '../runner/flutter_command.dart';
11
import '../runner/version.dart';
12 13 14 15 16

class UpgradeCommand extends FlutterCommand {
  final String name = 'upgrade';
  final String description = 'Upgrade your copy of Flutter.';

17 18 19
  @override
  Validator projectRootValidator = () => true;

20 21
  @override
  Future<int> runInProject() async {
22 23
    printStatus(getVersion(ArtifactStore.flutterRoot));

24 25 26 27 28
    try {
      runCheckedSync(<String>[
        'git', 'rev-parse', '@{u}'
      ], workingDirectory: ArtifactStore.flutterRoot);
    } catch (e) {
29
      printError('Unable to upgrade Flutter. No upstream repository configured for Flutter.');
30 31 32
      return 1;
    }

33 34 35
    printStatus('');
    printStatus('Upgrading Flutter...');

36
    int code = await runCommandAndStreamOutput(<String>[
37 38 39 40 41 42
      'git', 'pull', '--ff-only'
    ], workingDirectory: ArtifactStore.flutterRoot);

    if (code != 0)
      return code;

43 44 45 46 47 48 49 50 51 52
    printStatus('');
    code = await runCommandAndStreamOutput([sdkBinaryName('pub'), 'upgrade']);

    if (code != 0)
      return code;

    printStatus('');
    printStatus(getVersion(ArtifactStore.flutterRoot));

    return 0;
53 54
  }
}