-
-
Notifications
You must be signed in to change notification settings - Fork 243
/
Copy pathrun-lint.ts
45 lines (37 loc) · 1.46 KB
/
run-lint.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/* eslint-disable @typescript-eslint/no-non-null-assertion */
import execa from 'execa';
import path from 'node:path';
import { stripVTControlCharacters } from 'node:util';
import { FIXTURES_DIR } from './fixtures';
function normalizeOutput(value: unknown): string {
const ansiRemoved = stripVTControlCharacters(String(value));
return ansiRemoved.replace(
new RegExp(`^${FIXTURES_DIR.replace(/\\/g, '\\\\')}(.*?)$`, 'gm'),
(_, c1) => `__ROOT__/${c1.replace(/\\/g, '/')}`,
);
}
export async function runLint(directory: string): Promise<string | undefined> {
try {
const subprocess = execa('npx', ['ng', 'lint'], {
cwd: path.join(FIXTURES_DIR, directory),
});
/* eslint-disable @typescript-eslint/no-non-null-assertion */
subprocess.stdout!.pipe(process.stdout);
subprocess.stderr!.pipe(process.stderr);
/* eslint-enable @typescript-eslint/no-non-null-assertion */
const { stdout } = await subprocess;
return normalizeOutput(stdout);
} catch (error: any) {
return normalizeOutput(error.stdout || error);
}
}
export async function runLintFix(directory: string): Promise<void> {
const subprocess = execa('npx', ['ng', 'lint', '--fix'], {
cwd: path.join(FIXTURES_DIR, directory),
});
/* eslint-disable @typescript-eslint/no-non-null-assertion */
subprocess.stdout!.pipe(process.stdout);
subprocess.stderr!.pipe(process.stderr);
/* eslint-enable @typescript-eslint/no-non-null-assertion */
await subprocess;
}