|
1 | | -import { writeFile } from 'node:fs/promises'; |
2 | | -import path from 'node:path'; |
3 | 1 | import type { |
4 | 2 | Audit, |
5 | 3 | AuditOutput, |
6 | 4 | AuditOutputs, |
7 | 5 | PersistConfig, |
8 | 6 | PluginArtifactOptions, |
9 | | - RunnerConfig, |
10 | | - RunnerFilesPaths, |
11 | 7 | RunnerFunction, |
12 | 8 | } from '@code-pushup/models'; |
13 | | -import { |
14 | | - asyncSequential, |
15 | | - createRunnerFiles, |
16 | | - ensureDirectoryExists, |
17 | | - filePathToCliArg, |
18 | | - objectToCliArgs, |
19 | | - readJsonFile, |
20 | | - ui, |
21 | | -} from '@code-pushup/utils'; |
| 9 | +import { asyncSequential, ui } from '@code-pushup/utils'; |
22 | 10 | import type { ESLintPluginRunnerConfig, ESLintTarget } from '../config.js'; |
23 | 11 | import { lint } from './lint.js'; |
24 | 12 | import { lintResultsToAudits, mergeLinterOutputs } from './transform.js'; |
25 | 13 | import { loadArtifacts } from './utils.js'; |
26 | 14 |
|
27 | | -export async function executeRunner({ |
28 | | - runnerConfigPath, |
29 | | - runnerOutputPath, |
30 | | -}: RunnerFilesPaths): Promise<void> { |
31 | | - const { slugs, targets } = |
32 | | - await readJsonFile<ESLintPluginRunnerConfig>(runnerConfigPath); |
33 | | - |
34 | | - ui().logger.log(`ESLint plugin executing ${targets.length} lint targets`); |
35 | | - |
36 | | - const linterOutputs = await asyncSequential(targets, lint); |
37 | | - const lintResults = mergeLinterOutputs(linterOutputs); |
38 | | - const failedAudits = lintResultsToAudits(lintResults); |
39 | | - |
40 | | - const audits = slugs.map( |
41 | | - (slug): AuditOutput => |
42 | | - failedAudits.find(audit => audit.slug === slug) ?? { |
43 | | - slug, |
44 | | - score: 1, |
45 | | - value: 0, |
46 | | - displayValue: 'passed', |
47 | | - details: { issues: [] }, |
48 | | - }, |
49 | | - ); |
50 | | - |
51 | | - await ensureDirectoryExists(path.dirname(runnerOutputPath)); |
52 | | - await writeFile(runnerOutputPath, JSON.stringify(audits)); |
53 | | -} |
54 | | - |
55 | | -export async function createRunnerConfig( |
56 | | - scriptPath: string, |
57 | | - audits: Audit[], |
58 | | - targets: ESLintTarget[], |
59 | | -): Promise<RunnerConfig> { |
60 | | - const config: ESLintPluginRunnerConfig = { |
61 | | - targets, |
62 | | - slugs: audits.map(audit => audit.slug), |
63 | | - }; |
64 | | - const { runnerConfigPath, runnerOutputPath } = await createRunnerFiles( |
65 | | - 'eslint', |
66 | | - JSON.stringify(config), |
67 | | - ); |
68 | | - |
69 | | - return { |
70 | | - command: 'node', |
71 | | - args: [ |
72 | | - filePathToCliArg(scriptPath), |
73 | | - ...objectToCliArgs({ runnerConfigPath, runnerOutputPath }), |
74 | | - ], |
75 | | - configFile: runnerConfigPath, |
76 | | - outputFile: runnerOutputPath, |
77 | | - }; |
78 | | -} |
79 | | - |
80 | 15 | export function createRunnerFunction(options: { |
81 | 16 | audits: Audit[]; |
82 | 17 | targets: ESLintTarget[]; |
|
0 commit comments