Parses argv, runs the requested command, and returns its exit code.
Never terminates the process — src/bin.ts sets the exit code, so
every path here is testable.
The raw arguments (e.g. process.argv.slice(2))
0 on success, 1 on a runtime error, 2 on a usage error
Runs the CLI and returns its exit code without terminating the process.