import path from 'node:path';
import { ExitCode, sair } from '../helpers/index.js';
import { getMessages } from '../../core/messages/index.js';
import { scanVulnerabilities } from '../../vulnerabilities/index.js';
import { Command } from 'commander';
const { log, CliComandoVulnerabilidadesMensagens } = getMessages();
const msgs = CliComandoVulnerabilidadesMensagens;
export function comandoVulnerabilidades() {
    const cmd = new Command('vulnerabilidades').description(msgs.descricao);
    cmd.allowUnknownOption(true);
    cmd.allowExcessArguments(true);
    cmd.command('scan')
        .description(msgs.scanDescricao)
        .option('--root <path>', 'diretório raiz (padrão: cwd)')
        .option('--production', 'apenas dependências de produção')
        .option('--audit-level <level>', 'nível mínimo de severidade (critical|high|moderate|low)')
        .action(async (opts) => {
        try {
            const root = opts.root ? path.resolve(opts.root) : process.cwd();
            const result = await scanVulnerabilities({
                root,
                production: Boolean(opts.production),
                auditLevel: opts.auditLevel,
            });
            console.log(JSON.stringify(result, null, 2));
            const { counts } = result;
            log.info(msgs.resumoScan(result.totalVulnerabilities, counts.critical, counts.high, counts.moderate, counts.low));
            process.exitCode = counts.critical > 0 || counts.high > 0 ? 1 : 0;
        }
        catch (err) {
            log.erro(msgs.falhaScan(err instanceof Error ? err.message : String(err)));
            sair(ExitCode.Failure);
        }
    });
    return cmd;
}
//# sourceMappingURL=command-vulnerabilities.js.map