| // 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'; |
| import '../base/context.dart'; |
| import '../base/process.dart'; |
| import '../runner/flutter_command.dart'; |
| import '../runner/version.dart'; |
| |
| class UpgradeCommand extends FlutterCommand { |
| final String name = 'upgrade'; |
| final String description = 'Upgrade your copy of Flutter.'; |
| |
| @override |
| Future<int> runInProject() async { |
| printStatus(getVersion(ArtifactStore.flutterRoot)); |
| |
| try { |
| runCheckedSync(<String>[ |
| 'git', 'rev-parse', '@{u}' |
| ], workingDirectory: ArtifactStore.flutterRoot); |
| } catch (e) { |
| printError('Unable to upgrade Flutter. No upstream repository configured for Flutter.'); |
| return 1; |
| } |
| |
| printStatus(''); |
| printStatus('Upgrading Flutter...'); |
| |
| int code = await runCommandAndStreamOutput(<String>[ |
| 'git', 'pull', '--ff-only' |
| ], workingDirectory: ArtifactStore.flutterRoot); |
| |
| if (code != 0) |
| return code; |
| |
| printStatus(''); |
| code = await runCommandAndStreamOutput([sdkBinaryName('pub'), 'upgrade']); |
| |
| if (code != 0) |
| return code; |
| |
| printStatus(''); |
| printStatus(getVersion(ArtifactStore.flutterRoot)); |
| |
| return 0; |
| } |
| } |