run method

FutureOr<void> run(
  1. NatrixCommand cmd
)

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,
    ),
  );
}