From 90991854e05e5377a93f77d29f7ed5a011c7c352 Mon Sep 17 00:00:00 2001 From: Adam Barth Date: Thu, 12 Nov 2015 10:13:40 -0800 Subject: [PATCH] Add a `flutter upgrade` command This command upgrades the version of flutter that you're using and runs `pub upgrade` to update the transitive dependencies. --- packages/flutter_tools/lib/executable.dart | 4 ++- .../lib/src/commands/upgrade.dart | 30 +++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 packages/flutter_tools/lib/src/commands/upgrade.dart diff --git a/packages/flutter_tools/lib/executable.dart b/packages/flutter_tools/lib/executable.dart index e85a34f797..39b4e26910 100644 --- a/packages/flutter_tools/lib/executable.dart +++ b/packages/flutter_tools/lib/executable.dart @@ -23,6 +23,7 @@ import 'src/commands/start.dart'; import 'src/commands/stop.dart'; import 'src/commands/test.dart'; import 'src/commands/trace.dart'; +import 'src/commands/upgrade.dart'; import 'src/process.dart'; /// Main entry point for commands. @@ -57,7 +58,8 @@ Future main(List args) async { ..addCommand(new StartCommand()) ..addCommand(new StopCommand()) ..addCommand(new TestCommand()) - ..addCommand(new TraceCommand()); + ..addCommand(new TraceCommand()) + ..addCommand(new UpgradeCommand()); return Chain.capture(() async { dynamic result = await runner.run(args); diff --git a/packages/flutter_tools/lib/src/commands/upgrade.dart b/packages/flutter_tools/lib/src/commands/upgrade.dart new file mode 100644 index 0000000000..84b8494a9f --- /dev/null +++ b/packages/flutter_tools/lib/src/commands/upgrade.dart @@ -0,0 +1,30 @@ +// 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 'package:logging/logging.dart'; + +import '../artifacts.dart'; +import '../process.dart'; +import 'flutter_command.dart'; + +final Logger _logging = new Logger('flutter_tools.upgrade'); + +class UpgradeCommand extends FlutterCommand { + final String name = 'upgrade'; + final String description = 'Upgrade your copy of Flutter.'; + + @override + Future runInProject() async { + int code = await runCommandAndStreamOutput([ + 'git', 'pull', '--ff-only' + ], workingDirectory: ArtifactStore.flutterRoot); + + if (code != 0) + return code; + + return await runCommandAndStreamOutput([sdkBinaryName('pub'), 'upgrade']); + } +}