import { splitLines } from '../../../shared/helpers/index.js';
export function pontuarCircleCI(src, _relPath) {
    let score = 0;
    const maxScore = 100;
    const issues = [];
    const strengths = [];
    const _linhas = splitLines(src);
    const srcCompleto = src;
    const hardcodedSecrets = (srcCompleto.match(/\b(TOKEN|SECRET|PASSWORD|KEY|ACCESS_KEY)\b.*:\s*['"][^'"]+['"]/gi) || []).filter(l => !/\$/.test(l)).length;
    if (hardcodedSecrets === 0) {
        score += 25;
        strengths.push('Sem secrets hardcoded');
    }
    else {
        issues.push(`${hardcodedSecrets} secret(s) hardcoded`);
    }
    if (!/image:\s*[^\s@]+:latest\b/.test(srcCompleto)) {
        score += 15;
        strengths.push('Imagens com versão fixa');
    }
    else {
        issues.push('Uso de imagem :latest');
    }
    if (/save_cache:/.test(srcCompleto) && /restore_cache:/.test(srcCompleto)) {
        score += 20;
        strengths.push('Cache configurado');
    }
    else {
        issues.push('Cache não configurado');
    }
    if (/parallelism:/.test(srcCompleto)) {
        score += 15;
        strengths.push('Paralelismo configurado');
    }
    else {
        issues.push('Paralelismo não configurado');
    }
    if (/version:\s*2\.1/.test(srcCompleto)) {
        score += 10;
        strengths.push('Versão moderna do CircleCI');
    }
    else {
        issues.push('Versão do CircleCI desatualizada');
    }
    if (/resource_class:/.test(srcCompleto)) {
        score += 10;
        strengths.push('resource_class definido');
    }
    else {
        issues.push('resource_class não especificado');
    }
    if (!/orbs:/.test(srcCompleto)) {
        score += 5;
        strengths.push('Orbs não utilizados (configuração explícita)');
    }
    return {
        score,
        maxScore,
        percentage: Math.round(score / maxScore * 100),
        issues,
        strengths
    };
}
export const pontuadorCircleCI = {
    nome: 'pontuador-circleci',
    categoria: 'workflows',
    descricao: 'Pontua qualidade de CircleCI',
    pontuar: pontuarCircleCI
};
//# sourceMappingURL=scorer-circleci.js.map