apex-code-coverage-transformer
Version:
Transform Salesforce Apex code coverage JSONs into other formats accepted by SonarQube, GitHub, GitLab, Azure, Bitbucket, etc.
53 lines • 2.21 kB
JavaScript
;
import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
import { Messages } from '@salesforce/core';
import { transformCoverageReport } from '../../transformers/coverageTransformer.js';
import { formatOptions } from '../../utils/constants.js';
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
const messages = Messages.loadMessages('apex-code-coverage-transformer', 'transformer.transform');
export default class TransformerTransform extends SfCommand {
static summary = messages.getMessage('summary');
static description = messages.getMessage('description');
static examples = messages.getMessages('examples');
static flags = {
'coverage-json': Flags.file({
summary: messages.getMessage('flags.coverage-json.summary'),
char: 'j',
required: true,
}),
'output-report': Flags.file({
summary: messages.getMessage('flags.output-report.summary'),
char: 'r',
required: true,
default: 'coverage.xml',
}),
format: Flags.string({
summary: messages.getMessage('flags.format.summary'),
char: 'f',
required: false,
multiple: true,
options: formatOptions,
}),
'ignore-package-directory': Flags.directory({
summary: messages.getMessage('flags.ignore-package-directory.summary'),
char: 'i',
required: false,
multiple: true,
}),
};
async run() {
const { flags } = await this.parse(TransformerTransform);
const warnings = [];
const result = await transformCoverageReport(flags['coverage-json'], flags['output-report'], flags['format'] ?? ['sonar'], flags['ignore-package-directory'] ?? []);
warnings.push(...result.warnings);
const finalPath = result.finalPaths;
if (warnings.length > 0) {
warnings.forEach((warning) => {
this.warn(warning);
});
}
this.log(`The coverage report has been written to: ${finalPath.join(', ')}`);
return { path: finalPath };
}
}
//# sourceMappingURL=transform.js.map