Update package:args, more consistent helper usage (#4219)
diff --git a/lib/src/command.dart b/lib/src/command.dart index 3849468..61f8cde 100644 --- a/lib/src/command.dart +++ b/lib/src/command.dart
@@ -68,7 +68,7 @@ String get directory { return (argResults.options.contains('directory') - ? argResults.optionWithoutDefault('directory') + ? argResults.option('directory') : null) ?? _pubTopLevel.directory; } @@ -315,7 +315,7 @@ if (!argResults.wasParsed('color')) { forceColors = ForceColorOption.auto; } else { - forceColors = argResults['color'] as bool + forceColors = argResults.flag('color') ? ForceColorOption.always : ForceColorOption.never; }
diff --git a/lib/src/command/add.dart b/lib/src/command/add.dart index 5a78500..a310515 100644 --- a/lib/src/command/add.dart +++ b/lib/src/command/add.dart
@@ -371,7 +371,7 @@ /// Split [arg] on ':' and interpret it with the flags in [argResult] either as /// an old-style or a new-style descriptor to produce a PackageRef]. _ParseResult _parsePackage(String arg, ArgResults argResults) { - var isDev = argResults['dev'] as bool; + var isDev = argResults.flag('dev'); var isOverride = false; final match = _argRegExp.firstMatch(arg);
diff --git a/lib/src/command/cache_add.dart b/lib/src/command/cache_add.dart index 25508ec..cbcbda1 100644 --- a/lib/src/command/cache_add.dart +++ b/lib/src/command/cache_add.dart
@@ -51,9 +51,10 @@ // Parse the version constraint, if there is one. var constraint = VersionConstraint.any; - if (argResults['version'] != null) { + final versionArg = argResults.option('version'); + if (versionArg != null) { try { - constraint = VersionConstraint.parse(argResults['version'] as String); + constraint = VersionConstraint.parse(versionArg); } on FormatException catch (error) { usageException(error.message); }
diff --git a/lib/src/command/cache_clean.dart b/lib/src/command/cache_clean.dart index d981b1f..3d1b9d2 100644 --- a/lib/src/command/cache_clean.dart +++ b/lib/src/command/cache_clean.dart
@@ -6,7 +6,6 @@ import '../command_runner.dart'; import '../io.dart'; import '../log.dart' as log; -import '../utils.dart'; class CacheCleanCommand extends PubCommand { @override
diff --git a/lib/src/command/deps.dart b/lib/src/command/deps.dart index 9258545..313d8a5 100644 --- a/lib/src/command/deps.dart +++ b/lib/src/command/deps.dart
@@ -163,7 +163,7 @@ buffer.writeln("${log.bold('${sdk.name} SDK')} ${sdk.version}"); } - switch (argResults['style']) { + switch (argResults.optionWithDefault('style')) { case 'compact': await _outputCompact(buffer); break;
diff --git a/lib/src/command/downgrade.dart b/lib/src/command/downgrade.dart index 940a2ec..6055d5f 100644 --- a/lib/src/command/downgrade.dart +++ b/lib/src/command/downgrade.dart
@@ -7,7 +7,6 @@ import '../command.dart'; import '../log.dart' as log; import '../solver.dart'; -import '../utils.dart'; /// Handles the `downgrade` pub command. class DowngradeCommand extends PubCommand {
diff --git a/lib/src/command/get.dart b/lib/src/command/get.dart index 700472f..c795ec7 100644 --- a/lib/src/command/get.dart +++ b/lib/src/command/get.dart
@@ -7,7 +7,6 @@ import '../command.dart'; import '../log.dart' as log; import '../solver.dart'; -import '../utils.dart'; /// Handles the `get` pub command. class GetCommand extends PubCommand { @@ -82,7 +81,7 @@ ); var example = entrypoint.example; - if ((argResults['example'] as bool? ?? false) && example != null) { + if ((argResults.flag('example')) && example != null) { await example.acquireDependencies( SolveType.get, dryRun: argResults.flag('dry-run'),
diff --git a/lib/src/command/global_activate.dart b/lib/src/command/global_activate.dart index 7d92471..47d290a 100644 --- a/lib/src/command/global_activate.dart +++ b/lib/src/command/global_activate.dart
@@ -87,13 +87,13 @@ usageException('Cannot pass both --no-executables and --executable.'); } - executables = argResults['executable'] as List<String>?; + executables = argResults.multiOption('executable'); } else if (argResults.flag('no-executables')) { // An empty list means no executables. executables = []; } - final overwrite = argResults['overwrite'] as bool; + final overwrite = argResults.flag('overwrite'); Iterable<String> args = argResults.rest; @@ -111,14 +111,15 @@ usageException('Unexpected $arguments ${toSentence(unexpected)}.'); } - if (argResults['source'] != 'git' && - (argResults['git-path'] != null || argResults['git-ref'] != null)) { + if (argResults.optionWithDefault('source') != 'git' && + (argResults.option('git-path') != null || + argResults.option('git-ref') != null)) { usageException( 'Options `--git-path` and `--git-ref` can only be used with --source=git.', ); } - switch (argResults['source']) { + switch (argResults.optionWithDefault('source')) { case 'git': var repo = readArg('No Git repository given.'); validateNoExtraArgs(); @@ -126,8 +127,8 @@ repo, executables, overwriteBinStubs: overwrite, - path: argResults['git-path'] as String?, - ref: argResults['git-ref'] as String?, + path: argResults.option('git-path'), + ref: argResults.option('git-ref'), ); case 'hosted': @@ -136,7 +137,7 @@ PackageRef ref; try { ref = cache.hosted - .refFor(package, url: argResults['hosted-url'] as String?); + .refFor(package, url: argResults.option('hosted-url')); } on FormatException catch (e) { usageException('Invalid hosted-url: $e'); }
diff --git a/lib/src/command/lish.dart b/lib/src/command/lish.dart index 5b2a379..af4a042 100644 --- a/lib/src/command/lish.dart +++ b/lib/src/command/lish.dart
@@ -75,9 +75,8 @@ bool get skipValidation => argResults.flag('skip-validation'); - late final String? _fromArchive = - argResults.optionWithoutDefault('from-archive'); - late final String? _toArchive = argResults.optionWithoutDefault('to-archive'); + late final String? _fromArchive = argResults.option('from-archive'); + late final String? _toArchive = argResults.option('to-archive'); LishCommand() { argParser.addFlag(
diff --git a/lib/src/command/outdated.dart b/lib/src/command/outdated.dart index bd65385..283cb7b 100644 --- a/lib/src/command/outdated.dart +++ b/lib/src/command/outdated.dart
@@ -114,7 +114,7 @@ @override Future<void> runProtected() async { - if (argResults['mode'] == 'null-safety') { + if (argResults.option('mode') == 'null-safety') { dataError('''The `--mode=null-safety` option is no longer supported. Consider using the Dart 2.19 sdk to migrate to null safety.'''); }
diff --git a/lib/src/command/remove.dart b/lib/src/command/remove.dart index 2dd1b79..0b1c2c6 100644 --- a/lib/src/command/remove.dart +++ b/lib/src/command/remove.dart
@@ -10,7 +10,6 @@ import '../log.dart' as log; import '../pubspec.dart'; import '../solver.dart'; -import '../utils.dart'; /// Handles the `remove` pub command. Removes dependencies from `pubspec.yaml`, /// and performs an operation similar to `pub get`. Unlike `pub add`, this
diff --git a/lib/src/command/token_add.dart b/lib/src/command/token_add.dart index c15a51e..a194cbc 100644 --- a/lib/src/command/token_add.dart +++ b/lib/src/command/token_add.dart
@@ -37,7 +37,7 @@ @override String get docUrl => 'https://dart.dev/tools/pub/cmd/pub-token'; - String? get envVar => argResults['env-var'] as String?; + String? get envVar => argResults.option('env-var'); TokenAddCommand() { argParser.addOption(
diff --git a/lib/src/command/token_remove.dart b/lib/src/command/token_remove.dart index f3f20c0..101214e 100644 --- a/lib/src/command/token_remove.dart +++ b/lib/src/command/token_remove.dart
@@ -6,7 +6,6 @@ import '../exceptions.dart'; import '../log.dart' as log; import '../source/hosted.dart'; -import '../utils.dart'; /// Handles the `token remove` pub command. class TokenRemoveCommand extends PubCommand {
diff --git a/lib/src/command/unpack.dart b/lib/src/command/unpack.dart index 803d34c..0190d22 100644 --- a/lib/src/command/unpack.dart +++ b/lib/src/command/unpack.dart
@@ -117,7 +117,7 @@ final id = versions.last; final name = id.name; - final outputArg = argResults['output'] as String; + final outputArg = argResults.optionWithDefault('output'); final destinationDir = p.join(outputArg, '$name-${id.version}'); if (entryExists(destinationDir)) { if (argResults.flag('force')) { @@ -138,7 +138,7 @@ destinationDir, cache, ); - if (argResults['resolve'] as bool) { + if (argResults.flag('resolve')) { try { await e.acquireDependencies(SolveType.get); } finally {
diff --git a/lib/src/command_runner.dart b/lib/src/command_runner.dart index 2f4728e..ee10f74 100644 --- a/lib/src/command_runner.dart +++ b/lib/src/command_runner.dart
@@ -50,7 +50,7 @@ bool get captureStackChains { return argResults.flag('trace') || argResults.flag('verbose') || - argResults.optionWithoutDefault('verbosity') == 'all'; + argResults.option('verbosity') == 'all'; } @override
diff --git a/lib/src/executable.dart b/lib/src/executable.dart index dc2b901..feaf10c 100644 --- a/lib/src/executable.dart +++ b/lib/src/executable.dart
@@ -24,7 +24,7 @@ /// Extracting vm arguments from arguments. List<String> vmArgsFromArgResults(ArgResults argResults) { - final experiments = argResults['enable-experiment'] as List; + final experiments = argResults.multiOption('enable-experiment'); return [ if (experiments.isNotEmpty) "--enable-experiment=${experiments.join(',')}", ];
diff --git a/lib/src/utils.dart b/lib/src/utils.dart index 3093fce..2912b5f 100644 --- a/lib/src/utils.dart +++ b/lib/src/utils.dart
@@ -766,10 +766,7 @@ } extension RetrieveFlags on ArgResults { - bool flag(String name) => this[name] as bool; - - String optionWithDefault(String name) => this[name] as String; - String? optionWithoutDefault(String name) => this[name] as String?; + String optionWithDefault(String name) => option(name)!; } /// Limits the range of characters and length.
diff --git a/pubspec.yaml b/pubspec.yaml index 3fe357c..4a3f3b8 100644 --- a/pubspec.yaml +++ b/pubspec.yaml
@@ -5,7 +5,7 @@ dependencies: analyzer: ^6.3.0 - args: ^2.4.2 + args: ^2.5.0 async: ^2.11.0 cli_util: ^0.4.1 collection: ^1.18.0
diff --git a/test/testdata/goldens/embedding/embedding_test/logfile is written with --verbose and on unexpected exceptions.txt b/test/testdata/goldens/embedding/embedding_test/logfile is written with --verbose and on unexpected exceptions.txt index bc70c20..dc9a51d 100644 --- a/test/testdata/goldens/embedding/embedding_test/logfile is written with --verbose and on unexpected exceptions.txt +++ b/test/testdata/goldens/embedding/embedding_test/logfile is written with --verbose and on unexpected exceptions.txt
@@ -305,7 +305,7 @@ [E] package:pub/src/command.dart $LINE:$COL PubCommand.run [E] package:args/command_runner.dart $LINE:$COL CommandRunner.runCommand [E] tool/test-bin/pub_command_runner.dart $LINE:$COL Runner.runCommand -[E] tool/test-bin/pub_command_runner.dart $LINE:$COL Runner.run +[E] tool/test-bin/pub_command_runner.dart $LINE:$COL Runner.run [E] tool/test-bin/pub_command_runner.dart $LINE:$COL main [E] This is an unexpected error. The full log and other details are collected in: [E] @@ -346,7 +346,7 @@ | package:pub/src/command.dart $LINE:$COL PubCommand.run | package:args/command_runner.dart $LINE:$COL CommandRunner.runCommand | tool/test-bin/pub_command_runner.dart $LINE:$COL Runner.runCommand - | tool/test-bin/pub_command_runner.dart $LINE:$COL Runner.run + | tool/test-bin/pub_command_runner.dart $LINE:$COL Runner.run | tool/test-bin/pub_command_runner.dart $LINE:$COL main ERR : This is an unexpected error. The full log and other details are collected in: |
diff --git a/tool/test-bin/pub_command_runner.dart b/tool/test-bin/pub_command_runner.dart index e6d84e7..186d905 100644 --- a/tool/test-bin/pub_command_runner.dart +++ b/tool/test-bin/pub_command_runner.dart
@@ -13,7 +13,6 @@ import 'package:pub/src/command.dart'; import 'package:pub/src/exit_codes.dart' as exit_codes; import 'package:pub/src/log.dart' as log; -import 'package:pub/src/utils.dart'; /// A command for explicitly throwing an exception, to test the handling of /// unexpected exceptions.