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