As the title said, what's the difference between ParsableCommand.parse and .parseAsRoot? Rather, when to use which.
It seems to be doing the same thing for top-level command, but parse throws error when invoking subcommand.
As the title said, what's the difference between ParsableCommand.parse and .parseAsRoot? Rather, when to use which.
It seems to be doing the same thing for top-level command, but parse throws error when invoking subcommand.
parse() returns Self, so it only works on a standalone command or a ParsableArguments type. If you try to call it with inputs that would return a subcommand, it fails.
parseAsRoot() returns a type-erased ParsableCommand instance, so it can return the root command, a subcommand, or even an internal command type. You'll need to cast the result to a specific type if you want to do much more than call run() on it.
Regarding when to use which — if you're trying to parse a ParsableArguments type, parse() is your only option. For commands you should generally use the other.
The Manual Parsing and Testing document might help. Please let us know if it needs more details.