CLI entrypoint for argv parsing and command dispatch.
Parses CLI arguments without dispatching a command.
@spec main([String.t()]) :: :ok | {:error, term()}