///|
pub fn run_cli() -> Unit {
  let argv = @sys.get_cli_args()
  let args = if argv.length() > 1 { argv[1:].to_array() } else { [] }
  match parse_cli_args(args) {
    Ok(Command::Install(cli)) =>
      match parse_spec(cli.spec) {
        Ok(spec) => {
          let name = match cli.name {
            Some(value) => value
            None => spec.package_name
          }
          match install(spec, name, cli.target) {
            Ok(_) => ()
            Err(err) => {
              println("error: \{err}")
              @sys.exit(1)
            }
          }
        }
        Err(err) => {
          println("error: \{err}")
          println(usage())
          @sys.exit(1)
        }
      }
    Ok(Command::Uninstall(name)) =>
      match uninstall(name) {
        Ok(_) => ()
        Err(err) => {
          println("error: \{err}")
          @sys.exit(1)
        }
      }
    Err(CliError::HelpRequested) => println(usage())
    Err(err) => {
      println("error: \{err}")
      println(usage())
      @sys.exit(1)
    }
  }
}