Skip to content

Commit

Permalink
feat: position arguments can be proxied through a task now
Browse files Browse the repository at this point in the history
  • Loading branch information
brad-jones committed Jun 26, 2020
1 parent f6c0da5 commit d535162
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 1 deletion.
5 changes: 5 additions & 0 deletions lib/src/build_arg_parser.dart
Expand Up @@ -44,6 +44,11 @@ ArgParser buildArgParser(
for (var parameter in e.value.parameters) {
var optName = MirrorSystem.getName(parameter.simpleName).paramCase;

if (optName == 'argv' &&
parameter.type.reflectedType.toString() == 'List<String>') {
continue;
}

var abbrValue = Abbr.hasMetadata(parameter)
? Abbr.fromMetadata(parameter).value
: null;
Expand Down
8 changes: 7 additions & 1 deletion lib/src/executor.dart
Expand Up @@ -68,8 +68,14 @@ Future<void> executor(
}

var taskParameterValues = task.parameters.map((p) {
dynamic v;

var pName = MirrorSystem.getName(p.simpleName).paramCase;
var v = parsedArgv.command[pName];
if (pName == 'argv' && p.type.reflectedType.toString() == 'List<String>') {
v = parsedArgv.command.rest;
} else {
v = parsedArgv.command[pName];
}

if (v != null) {
return typeParser(p.type.reflectedType, v);
Expand Down
4 changes: 4 additions & 0 deletions lib/src/parse_docblocks.dart
Expand Up @@ -46,6 +46,10 @@ Future<List<DocBlock>> parseDocBlocks(
var parameters = <String, String>{};
for (var parameter in e.value.parameters) {
var paramName = MirrorSystem.getName(parameter.simpleName);
if (paramName == 'argv' &&
parameter.type.reflectedType.toString() == 'List<String>') {
continue;
}
parameters[paramName] = docBlock
.skipWhile((_) => !_.startsWith('* [$paramName]'))
.takeWhile(
Expand Down

0 comments on commit d535162

Please sign in to comment.