pub fn run(cli: Cli) -> Result<(), CliError>
Run a parsed command.
Parsing is separate from execution on purpose: it keeps the argument surface testable and the error type inspectable.