run method
Determines which NatrixCommand of a tree will be executed by the arguments and applies these in parsed state to the command's NatrixCommandCallback.
Implementation
FutureOr<void> run(NatrixCommand cmd) async {
final List<String> args = _parser.mergeArguments(_arguments);
List<NatrixFlag> flags = [..._global];
bool found = true;
for (int i = 0; i < args.length; i++) {
if (!found) {
break;
}
for (final c in cmd.children) {
if (c.id == args.elementAtOrNull(i)) {
args.removeAt(i);
i--;
flags.addAll(cmd.flags);
if (!c.inheritFlags && c.hasParent()) {
flags = [..._global];
}
cmd = c.withParent(cmd);
flags.addAll(cmd.flags);
found = true;
break;
}
found = false;
}
}
final NatrixParserOutput parserOutput = _parser.parse(args, flags);
return cmd.callback(
NatrixCallbackOptions(
cmd: cmd,
flags: parserOutput.flags,
args: parserOutput.args,
globalFlags: _global,
parserOutput: parserOutput,
),
);
}