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);
final List<NatrixFlag> flags = [..._global];
bool found = true;
int i = 0;
while (found) {
flags.addAll(cmd.flags);
for (final NatrixCommand s in cmd.children) {
found = s.id == args.elementAtOrNull(i);
if (found) {
cmd = s.withParent(cmd);
flags.addAll(cmd.flags);
i++;
break;
}
}
break;
}
final NatrixParserOutput parserOutput = _parser.parse(args, flags);
return cmd.callback(
NatrixCallbackOptions(
cmd: cmd,
flags: parserOutput.flags,
args: parserOutput.args,
globalFlags: _global,
parserOutput: parserOutput,
),
);
}