UNPKG

apex-code-coverage-transformer

Version:

Transform Salesforce Apex code coverage JSONs into other formats accepted by SonarQube, GitHub, GitLab, Azure, Bitbucket, etc.

78 lines 2.69 kB
'use strict'; import { existsSync } from 'node:fs'; import { readFile } from 'node:fs/promises'; import { resolve } from 'node:path'; import TransformerTransform from '../commands/acc-transformer/transform.js'; import { getRepoRoot } from '../utils/getRepoRoot.js'; export const postrun = async function (options) { let commandType; let coverageJson; if ([ 'project:deploy:validate', 'project:deploy:start', 'project:deploy:report', 'project:deploy:resume', 'hardis:project:deploy:smart', ].includes(options.Command.id)) { commandType = 'deploy'; } else if (['apex:run:test', 'apex:get:test', 'hardis:org:test:apex'].includes(options.Command.id)) { commandType = 'test'; } else { return; } let configFile; const { repoRoot } = await getRepoRoot(); if (!repoRoot) { return; } const configPath = resolve(repoRoot, '.apexcodecovtransformer.config.json'); try { const jsonString = await readFile(configPath, 'utf-8'); configFile = JSON.parse(jsonString); } catch (error) { return; } const outputReport = configFile.outputReportPath || 'coverage.xml'; const coverageFormat = configFile.format || 'sonar'; const ignorePackageDirs = configFile.ignorePackageDirectories || ''; if (commandType === 'deploy') { coverageJson = configFile.deployCoverageJsonPath || '.'; } else { coverageJson = configFile.testCoverageJsonPath || '.'; } if (coverageJson.trim() === '.') { return; } const coverageJsonPath = resolve(coverageJson); const outputReportPath = resolve(outputReport); if (!existsSync(coverageJsonPath)) { return; } const commandArgs = []; commandArgs.push('--coverage-json'); commandArgs.push(coverageJsonPath); commandArgs.push('--output-report'); commandArgs.push(outputReportPath); if (coverageFormat.trim() !== '') { const formatArray = coverageFormat.split(','); for (const format of formatArray) { const sanitizedFormat = format.replace(/,/g, ''); commandArgs.push('--format'); commandArgs.push(sanitizedFormat); } } if (ignorePackageDirs.trim() !== '') { const ignorePackageDirArray = ignorePackageDirs.split(','); for (const dirs of ignorePackageDirArray) { const sanitizedDir = dirs.replace(/,/g, ''); commandArgs.push('--ignore-package-directory'); commandArgs.push(sanitizedDir); } } await TransformerTransform.run(commandArgs); }; //# sourceMappingURL=postrun.js.map