context7-cli 0.5.1

Search library documentation from your terminal — zero runtime, bilingual (EN/PT), multi-key rotation
Documentation
//! Platform-specific initialization for console encoding and ANSI support.
//!
//! On Windows, configures UTF-8 code page (65001) and enables
//! virtual terminal processing for ANSI escape sequences.
//! On other platforms, this is a no-op.

/// Initialises platform-specific console settings.
///
/// Must be called as the FIRST action in `main()`, before any I/O.
pub fn inicializar_plataforma() {
    #[cfg(windows)]
    configurar_console_utf8();

    #[cfg(windows)]
    habilitar_ansi_windows();
}

#[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);
    }
}

#[cfg(test)]
mod testes {
    use super::*;

    /// Verifica que `inicializar_plataforma` não faz panic em nenhuma plataforma.
    ///
    /// Em Linux e macOS a função é no-op; em Windows configura UTF-8 e ANSI.
    /// O teste garante que a chamada é segura independente do sistema operacional.
    #[test]
    fn testa_inicializar_plataforma_nao_faz_panic() {
        // Deve completar sem panic em Linux, macOS e Windows.
        inicializar_plataforma();
    }

    /// Verifica que `inicializar_plataforma` é no-op seguro em plataformas não-Windows.
    ///
    /// Em Linux e macOS a função não executa nenhuma instrução — apenas retorna.
    /// O teste confirma que múltiplas chamadas consecutivas são seguras (idempotente).
    #[cfg(not(windows))]
    #[test]
    fn testa_inicializar_plataforma_e_noop_em_nao_windows() {
        // Múltiplas chamadas devem ser idempotentes e não causar efeitos colaterais.
        inicializar_plataforma();
        inicializar_plataforma();
        inicializar_plataforma();
    }
}