-
Notifications
You must be signed in to change notification settings - Fork 148
/
Copy pathutils.ts
33 lines (27 loc) · 1.02 KB
/
utils.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
import { writeFileSync } from 'fs';
import { resolve } from 'path';
import type { TSESLint } from '@typescript-eslint/experimental-utils';
import { format, resolveConfig } from 'prettier';
const prettierConfig = resolveConfig.sync(__dirname);
export type LinterConfig = TSESLint.Linter.Config;
const addAutoGeneratedComment = (code: string) =>
[
'// THIS CODE WAS AUTOMATICALLY GENERATED',
'// DO NOT EDIT THIS CODE BY HAND',
'// YOU CAN REGENERATE IT USING npm run generate:configs',
'',
code,
].join('\n');
/**
* Helper function writes configuration.
*/
export const writeConfig = (config: LinterConfig, configName: string): void => {
// note: we use `export =` because ESLint will import these configs via a commonjs import
const code = `export = ${JSON.stringify(config)};`;
const configStr = format(addAutoGeneratedComment(code), {
parser: 'typescript',
...prettierConfig,
});
const filePath = resolve(__dirname, `../../lib/configs/${configName}.ts`);
writeFileSync(filePath, configStr);
};