Version 2.14.0-118.0.dev

Merge commit '15187a692d9c3140c26d0473b4158108046bc1e5' into 'dev'
diff --git a/pkg/nnbd_migration/lib/migration_cli.dart b/pkg/nnbd_migration/lib/migration_cli.dart
index accb1f77..bfdec77 100644
--- a/pkg/nnbd_migration/lib/migration_cli.dart
+++ b/pkg/nnbd_migration/lib/migration_cli.dart
@@ -21,8 +21,8 @@
 import 'package:analyzer_plugin/protocol/protocol_common.dart'
     hide AnalysisError;
 import 'package:args/args.dart';
-import 'package:args/command_runner.dart';
 import 'package:cli_util/cli_logging.dart';
+import 'package:dartdev/src/core.dart';
 import 'package:meta/meta.dart';
 import 'package:nnbd_migration/src/edit_plan.dart';
 import 'package:nnbd_migration/src/exceptions.dart';
@@ -137,8 +137,7 @@
       @required this.webPreview});
 }
 
-// TODO(devoncarew): Refactor so this class extends DartdevCommand.
-class MigrateCommand extends Command<int> {
+class MigrateCommand extends DartdevCommand {
   static const String cmdName = 'migrate';
 
   static const String cmdDescription =
@@ -152,32 +151,17 @@
 
   final bool verbose;
 
-  ArgParser _argParser;
-
-  MigrateCommand({this.verbose = false}) {
+  MigrateCommand({this.verbose = false})
+      : super(cmdName, '$cmdDescription\n\n$migrationGuideLink') {
     MigrationCli._defineOptions(argParser, !verbose);
   }
 
   @override
-  ArgParser get argParser {
-    // We override this in order to configure the help text line wrapping.
-    return _argParser ??= ArgParser(
-      usageLineLength: stdout.hasTerminal ? stdout.terminalColumns : null,
-    );
-  }
-
-  @override
-  String get description => '$cmdDescription\n\n$migrationGuideLink';
-
-  @override
   String get invocation {
     return '${super.invocation} [project or directory]';
   }
 
   @override
-  String get name => cmdName;
-
-  @override
   FutureOr<int> run() async {
     var cli = MigrationCli(binaryName: 'dart $name');
     try {
diff --git a/pkg/nnbd_migration/pubspec.yaml b/pkg/nnbd_migration/pubspec.yaml
index 10777c5..5d64dae 100644
--- a/pkg/nnbd_migration/pubspec.yaml
+++ b/pkg/nnbd_migration/pubspec.yaml
@@ -18,6 +18,8 @@
   cli_util: ^0.2.0
   collection: ^1.14.11
   crypto: ^2.0.6
+  dartdev:
+    path: ../dartdev
   meta:
     path: ../meta
   path: ^1.6.2
diff --git a/tools/VERSION b/tools/VERSION
index 8ced498..06cdec9 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 14
 PATCH 0
-PRERELEASE 117
+PRERELEASE 118
 PRERELEASE_PATCH 0
\ No newline at end of file