ssh-cli 0.3.2

Native Rust CLI that gives LLMs (Claude Code, Cursor, Windsurf) the ability to operate remote servers via SSH over stdin/stdout
Documentation
//! Ponto de entrada do binário ssh-cli.
//!
//! Mantém a lógica mínima: configura runtime tokio e chama `ssh_cli::run()`.

#[cfg(feature = "musl-allocator")]
#[global_allocator]
static GLOBAL: mimalloc::MiMalloc = mimalloc::MiMalloc;

fn main() {
    let runtime = match tokio::runtime::Builder::new_multi_thread()
        .enable_all()
        .build()
    {
        Ok(rt) => rt,
        Err(e) => {
            ssh_cli::output::imprimir_erro_runtime(&e.to_string());
            std::process::exit(ssh_cli::erros::exit_codes::EX_IOERR);
        }
    };

    let resultado = runtime.block_on(ssh_cli::run());

    match resultado {
        Ok(()) => {
            if ssh_cli::signals::terminado() {
                std::process::exit(ssh_cli::erros::exit_codes::EX_SIGTERM);
            }
            if ssh_cli::signals::cancelado() {
                std::process::exit(ssh_cli::erros::exit_codes::EX_SIGINT);
            }
            std::process::exit(ssh_cli::erros::exit_codes::EX_OK);
        }
        Err(e) => {
            if ssh_cli::signals::terminado() {
                std::process::exit(ssh_cli::erros::exit_codes::EX_SIGTERM);
            }
            if ssh_cli::signals::cancelado() {
                std::process::exit(ssh_cli::erros::exit_codes::EX_SIGINT);
            }
            if let Some(erro_ssh) = e.downcast_ref::<ssh_cli::erros::ErroSshCli>() {
                ssh_cli::output::imprimir_erro_dominio(erro_ssh);
                std::process::exit(erro_ssh.exit_code());
            }
            ssh_cli::output::imprimir_erro_generico(&e);
            std::process::exit(ssh_cli::erros::exit_codes::EX_GENERAL);
        }
    }
}