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.