parse method
Implementation
Future<Map<String, dynamic>> parse(List<String> args) async {
ArgResults result = _parser.parse(args);
Map<String, dynamic> params = {};
params.addEntries(
options.keys.map((arg) => MapEntry(arg, result.option(arg))).toList(),
);
params.addEntries(
multiOptions.keys.map((arg) => MapEntry(arg, result.multiOption(arg))).toList(),
);
params.addEntries(
flags.keys.map((arg) => MapEntry(arg, result.flag(arg))).toList(),
);
for (var key in options.keys) {
while ((options[key].mustRequired! as bool) && params[key] == null) {
dynamic value = options[key].question is Future Function()
? await options[key].question!()
: options[key].question!();
if (value != null) {
params[key] = value;
}
}
}
for (var key in multiOptions.keys) {
while ((multiOptions[key].mustRequired! as bool) && params[key].length == 0) {
dynamic value = multiOptions[key].question is Future Function()
? await multiOptions[key].question!()
: multiOptions[key].question!();
if (value != null) {
params[key] = value;
}
}
}
for (var key in flags.keys) {
while ((flags[key].mustRequired! as bool) && params[key] == null) {
dynamic value = flags[key].question is Future Function()
? await flags[key].question!()
: flags[key].question!();
if (value != null) {
params[key] = value;
}
}
}
if (_force) {
params['force'] = result['force'];
}
return params;
}