[dartdev] some refactoring to the ArgParser handling code in dartdev
Change-Id: I727561cf542023426aa4f8a31427d951127c4f66
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/160703
Reviewed-by: Jaime Wren <jwren@google.com>
Commit-Queue: Devon Carew <devoncarew@google.com>
diff --git a/pkg/dartdev/analysis_options.yaml b/pkg/dartdev/analysis_options.yaml
index b1e4858..4416a89 100644
--- a/pkg/dartdev/analysis_options.yaml
+++ b/pkg/dartdev/analysis_options.yaml
@@ -37,7 +37,6 @@
- prefer_asserts_in_initializer_lists
- prefer_const_constructors
- prefer_const_declarations
- - prefer_expression_function_bodies
- prefer_function_declarations_over_variables
- prefer_initializing_formals
- prefer_inlined_adds
diff --git a/pkg/dartdev/lib/dartdev.dart b/pkg/dartdev/lib/dartdev.dart
index 5c4c9b7..275c8c2 100644
--- a/pkg/dartdev/lib/dartdev.dart
+++ b/pkg/dartdev/lib/dartdev.dart
@@ -180,9 +180,8 @@
class DartdevRunner<int> extends CommandRunner {
@override
- final ArgParser argParser = ArgParser(
- usageLineLength: dartdevUsageLineLength,
- );
+ final ArgParser argParser =
+ ArgParser(usageLineLength: dartdevUsageLineLength);
static const String dartdevDescription =
'A command-line utility for Dart development';
diff --git a/pkg/dartdev/lib/src/commands/compile.dart b/pkg/dartdev/lib/src/commands/compile.dart
index 33d07c9..4b94bcf 100644
--- a/pkg/dartdev/lib/src/commands/compile.dart
+++ b/pkg/dartdev/lib/src/commands/compile.dart
@@ -5,14 +5,11 @@
import 'dart:async';
import 'dart:io';
-import 'package:args/args.dart';
-import 'package:args/command_runner.dart';
import 'package:dart2native/generate.dart';
import 'package:path/path.dart' as path;
import '../core.dart';
import '../sdk.dart';
-import '../utils.dart';
import '../vm_interop_handler.dart';
const int compileErrorExitCode = 64;
@@ -230,22 +227,8 @@
}
}
-class CompileCommand extends Command {
- // TODO(mit/jwren) Investigate and document why this command isn't a subtype
- // of DartdevCommand, or change it to be a subtype, removing the requirement
- // to have the following override.
- @override
- final ArgParser argParser = ArgParser(
- usageLineLength: dartdevUsageLineLength,
- );
-
- @override
- String get description => 'Compile Dart to various formats.';
-
- @override
- String get name => 'compile';
-
- CompileCommand() {
+class CompileCommand extends DartdevCommand {
+ CompileCommand() : super('compile', 'Compile Dart to various formats.') {
addSubcommand(CompileJSCommand());
addSubcommand(CompileSnapshotCommand(
commandName: 'jit-snapshot',
diff --git a/pkg/dartdev/lib/src/commands/fix.dart b/pkg/dartdev/lib/src/commands/fix.dart
index b0c09b0..36a8579 100644
--- a/pkg/dartdev/lib/src/commands/fix.dart
+++ b/pkg/dartdev/lib/src/commands/fix.dart
@@ -14,12 +14,8 @@
import 'analyze_impl.dart';
class FixCommand extends DartdevCommand {
- FixCommand()
- : super(
- 'fix', 'Fix Dart source code.',
- // Experimental.
- hidden: true,
- );
+ // This command is hidden as its currently experimental.
+ FixCommand() : super('fix', 'Fix Dart source code.', hidden: true);
@override
FutureOr<int> run() async {
diff --git a/pkg/dartdev/lib/src/commands/pub.dart b/pkg/dartdev/lib/src/commands/pub.dart
index 7d91085..6b40ebc 100644
--- a/pkg/dartdev/lib/src/commands/pub.dart
+++ b/pkg/dartdev/lib/src/commands/pub.dart
@@ -15,7 +15,7 @@
PubCommand() : super('pub', 'Work with packages.');
@override
- final ArgParser argParser = ArgParser.allowAnything();
+ ArgParser createArgParser() => ArgParser.allowAnything();
@override
void printUsage() {
diff --git a/pkg/dartdev/lib/src/commands/run.dart b/pkg/dartdev/lib/src/commands/run.dart
index a76009c..fe2f67a 100644
--- a/pkg/dartdev/lib/src/commands/run.dart
+++ b/pkg/dartdev/lib/src/commands/run.dart
@@ -26,11 +26,13 @@
// provided before any command and to provide a more consistent help message
// with the rest of the tool.
@override
- final ArgParser argParser = ArgParser(
- // Don't parse flags after script name.
- allowTrailingOptions: false,
- usageLineLength: dartdevUsageLineLength,
- );
+ ArgParser createArgParser() {
+ return ArgParser(
+ // Don't parse flags after script name.
+ allowTrailingOptions: false,
+ usageLineLength: dartdevUsageLineLength,
+ );
+ }
@override
final bool verbose;
diff --git a/pkg/dartdev/lib/src/core.dart b/pkg/dartdev/lib/src/core.dart
index 70ac250..9a05bee 100644
--- a/pkg/dartdev/lib/src/core.dart
+++ b/pkg/dartdev/lib/src/core.dart
@@ -37,9 +37,12 @@
ArgParser _argParser;
@override
- ArgParser get argParser => _argParser ??= _createArgParser();
+ ArgParser get argParser => _argParser ??= createArgParser();
- ArgParser _createArgParser() =>
+ /// Create the ArgParser instance for this command.
+ ///
+ /// Subclasses can override this in order to create a customized ArgParser.
+ ArgParser createArgParser() =>
ArgParser(usageLineLength: dartdevUsageLineLength);
Project get project => _project ??= Project();