import { splitLines } from '../../../shared/helpers/index.js';
export function pontuarAzure(src, _relPath) {
    let score = 0;
    const maxScore = 100;
    const issues = [];
    const strengths = [];
    const _linhas = splitLines(src);
    const srcCompleto = src;
    if (!/vmImage:\s*['"]?.*latest['"]?/i.test(srcCompleto)) {
        score += 15;
        strengths.push('Imagens com versão fixa');
    }
    else {
        issues.push('Uso de imagem :latest');
    }
    const hardcodedSecrets = (srcCompleto.match(/(password|token|secret|key):\s*['"]?([^$({][a-zA-Z0-9_\-]{8,})['"]?/gi) || []).length;
    if (hardcodedSecrets === 0) {
        score += 25;
        strengths.push('Sem secrets hardcoded');
    }
    else {
        issues.push(`${hardcodedSecrets} secret(s) hardcoded`);
    }
    if (/task:\s*Cache@/i.test(srcCompleto) || /CacheBeta@/i.test(srcCompleto)) {
        score += 20;
        strengths.push('Cache configurado');
    }
    else {
        issues.push('Cache de dependências não configurado');
    }
    if (/strategy:\s*matrix:/i.test(srcCompleto) || /parallel:\s*\d+/i.test(srcCompleto)) {
        score += 15;
        strengths.push('Paralelismo configurado');
    }
    else {
        issues.push('Sem estratégia de paralelismo');
    }
    if (/pool:\s*\n/i.test(srcCompleto)) {
        score += 10;
        strengths.push('Pool de agentes definido');
    }
    else {
        issues.push('Pool de agentes não definido');
    }
    if (/checkout:\s*none/i.test(srcCompleto)) {
        score += 5;
        strengths.push('Checkout otimizado em jobs de deploy');
    }
    if (!/bash:\s*curl.*\|\s*bash/i.test(srcCompleto)) {
        score += 10;
        strengths.push('Sem comandos curl|bash perigosos');
    }
    else {
        issues.push('Comandos curl|bash perigosos detectados');
    }
    return {
        score,
        maxScore,
        percentage: Math.round(score / maxScore * 100),
        issues,
        strengths
    };
}
export const pontuadorAzure = {
    nome: 'pontuador-azure',
    categoria: 'workflows',
    descricao: 'Pontua qualidade de Azure Pipelines',
    pontuar: pontuarAzure
};
//# sourceMappingURL=scorer-azure.js.map