@code-pushup/eslint-plugin
Version:
Code PushUp plugin for detecting problems in source code using ESLint.📋
38 lines • 1.66 kB
JavaScript
import { writeFile } from 'node:fs/promises';
import path from 'node:path';
import { asyncSequential, createRunnerFiles, ensureDirectoryExists, filePathToCliArg, objectToCliArgs, readJsonFile, ui, } from '@code-pushup/utils';
import { lint } from './lint.js';
import { lintResultsToAudits, mergeLinterOutputs } from './transform.js';
export async function executeRunner({ runnerConfigPath, runnerOutputPath, }) {
const { slugs, targets } = await readJsonFile(runnerConfigPath);
ui().logger.log(`ESLint plugin executing ${targets.length} lint targets`);
const linterOutputs = await asyncSequential(targets, lint);
const lintResults = mergeLinterOutputs(linterOutputs);
const failedAudits = lintResultsToAudits(lintResults);
const audits = slugs.map((slug) => failedAudits.find(audit => audit.slug === slug) ?? {
slug,
score: 1,
value: 0,
displayValue: 'passed',
details: { issues: [] },
});
await ensureDirectoryExists(path.dirname(runnerOutputPath));
await writeFile(runnerOutputPath, JSON.stringify(audits));
}
export async function createRunnerConfig(scriptPath, audits, targets) {
const config = {
targets,
slugs: audits.map(audit => audit.slug),
};
const { runnerConfigPath, runnerOutputPath } = await createRunnerFiles('eslint', JSON.stringify(config));
return {
command: 'node',
args: [
filePathToCliArg(scriptPath),
...objectToCliArgs({ runnerConfigPath, runnerOutputPath }),
],
configFile: runnerConfigPath,
outputFile: runnerOutputPath,
};
}
//# sourceMappingURL=index.js.map