import { messages } from '../../../core/messages/index.js';
import { criarOcorrencia } from '../../../types/index.js';
export const detectorWorkflowAcessibilidade = {
    nome: 'detector-workflow-acessibilidade',
    categoria: 'workflows',
    descricao: 'Detecta problemas de acessibilidade em GitHub Actions',
    test: (relPath) => /\.github\/workflows\/.*\.ya?ml$/i.test(relPath),
    aplicar: (src, relPath) => {
        if (!src)
            return [];
        const ocorrencias = [];
        const linhas = src.split('\n');
        let hasTimeout = false;
        linhas.forEach((linha) => {
            if (/timeout-minutes/.test(linha)) {
                hasTimeout = true;
            }
        });
        if (!hasTimeout) {
            ocorrencias.push(criarOcorrencia({
                tipo: 'workflow-sem-timeout',
                nivel: 'aviso',
                mensagem: messages.AnalistaGithubActionsMensagens.workflowWithoutTimeout,
                relPath,
                linha: 1,
                sugestao: messages.AnalistaGithubActionsMensagens.workflowWithoutTimeoutSugestao
            }));
        }
        return ocorrencias;
    }
};
export function detectarProblemasAcessibilidade(workflow) {
    const problemas = [];
    const wf = workflow;
    if (!wf?.jobs)
        return problemas;
    let hasTimeout = wf['timeout-minutes'] !== undefined;
    for (const [, job] of Object.entries(wf.jobs)) {
        if (!job)
            continue;
        if (job['timeout-minutes'])
            hasTimeout = true;
    }
    if (!hasTimeout) {
        problemas.push({
            tipo: 'workflow-sem-timeout',
            descricao: messages.AnalistaGithubActionsMensagens.workflowWithoutTimeout,
            severidade: 'media',
            sugestao: messages.AnalistaGithubActionsMensagens.workflowWithoutTimeoutSugestao
        });
    }
    return problemas;
}
//# sourceMappingURL=detector-workflow-accessibility.js.map