context7-cli 0.4.0

Search library documentation from your terminal — zero runtime, bilingual (EN/PT), multi-key rotation
Documentation
#[cfg(windows)]
fn configurar_console_utf8() {
    use windows_sys::Win32::System::Console::{SetConsoleCP, SetConsoleOutputCP};
    // SAFETY: funções Windows API idempotentes que apenas definem codepage do console.
    // Sem concorrência neste ponto — chamadas únicas no início de main() antes de qualquer thread.
    unsafe {
        SetConsoleOutputCP(65001); // CP_UTF8
        SetConsoleCP(65001);
    }
}

#[cfg(windows)]
fn habilitar_ansi_windows() {
    use colored::control;
    // colored v2 em Windows Terminal/PowerShell 7+ detecta ANSI automaticamente.
    // Para cmd.exe legado sem VirtualTerminalProcessing: forçar via set_virtual_terminal.
    // Se falhar (cmd.exe muito antigo), desabilitar cores para evitar escape sequences brutas.
    if control::set_virtual_terminal(true).is_err() {
        control::set_override(false);
    }
}

#[tokio::main(flavor = "multi_thread", worker_threads = 4)]
async fn main() -> anyhow::Result<()> {
    #[cfg(windows)]
    configurar_console_utf8();

    #[cfg(windows)]
    habilitar_ansi_windows();

    // Initialise logging and keep GuardaLog alive until end of main() for flush
    let _guarda_log = context7_cli::inicializar_logging()?;
    context7_cli::run().await
}