|
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 | | -import { loadArtifacts } from './utils'; |
26 | | - |
27 | | -export async function executeRunner({ |
28 | | - runnerConfigPath, |
29 | | - runnerOutputPath, |
30 | | - persistOutputDir, |
31 | | -}: RunnerFilesPaths & { persistOutputDir: string }): Promise<void> { |
32 | | - const { slugs, targets } = |
33 | | - await readJsonFile<ESLintPluginRunnerConfig>(runnerConfigPath); |
34 | | - |
35 | | - ui().logger.log(`ESLint plugin executing ${targets.length} lint targets`); |
36 | | - |
37 | | - const linterOutputs = await asyncSequential( |
38 | | - targets.map(target => ({ |
39 | | - ...target, |
40 | | - outputDir: persistOutputDir, |
41 | | - })), |
42 | | - lint, |
43 | | - ); |
44 | | - const lintResults = mergeLinterOutputs(linterOutputs); |
45 | | - const failedAudits = lintResultsToAudits(lintResults); |
46 | | - |
47 | | - const audits = slugs.map( |
48 | | - (slug): AuditOutput => |
49 | | - failedAudits.find(audit => audit.slug === slug) ?? { |
50 | | - slug, |
51 | | - score: 1, |
52 | | - value: 0, |
53 | | - displayValue: 'passed', |
54 | | - details: { issues: [] }, |
55 | | - }, |
56 | | - ); |
57 | | - |
58 | | - await ensureDirectoryExists(path.dirname(runnerOutputPath)); |
59 | | - await writeFile(runnerOutputPath, JSON.stringify(audits)); |
60 | | -} |
61 | | - |
62 | | -export async function createRunnerConfig( |
63 | | - scriptPath: string, |
64 | | - audits: Audit[], |
65 | | - targets: ESLintTarget[], |
66 | | -): Promise<RunnerConfig> { |
67 | | - const config: ESLintPluginRunnerConfig = { |
68 | | - targets, |
69 | | - slugs: audits.map(audit => audit.slug), |
70 | | - }; |
71 | | - const { runnerConfigPath, runnerOutputPath } = await createRunnerFiles( |
72 | | - 'eslint', |
73 | | - JSON.stringify(config), |
74 | | - ); |
75 | | - |
76 | | - return { |
77 | | - command: 'node', |
78 | | - args: [ |
79 | | - filePathToCliArg(scriptPath), |
80 | | - ...objectToCliArgs({ runnerConfigPath, runnerOutputPath }), |
81 | | - ], |
82 | | - configFile: runnerConfigPath, |
83 | | - outputFile: runnerOutputPath, |
84 | | - }; |
85 | | -} |
| 13 | +import { loadArtifacts } from './utils.js'; |
86 | 14 |
|
87 | 15 | export async function createRunnerFunction(options: { |
88 | 16 | audits: Audit[]; |
|
0 commit comments