1 | import os from 'os';
|
2 | import { existsSync, promises as fs } from 'fs';
|
3 |
|
4 | import { tokens } from '@stryker-mutator/api/plugin';
|
5 |
|
6 | import { defaultOptions } from '../config/index.js';
|
7 |
|
8 | import { initializerTokens } from './index.js';
|
9 |
|
10 | const GITIGNORE_FILE = '.gitignore';
|
11 |
|
12 | export class GitignoreWriter {
|
13 | public static inject = tokens(initializerTokens.out);
|
14 | constructor(private readonly out: typeof console.log) {}
|
15 |
|
16 | public async addStrykerTempFolder(): Promise<void> {
|
17 | const defaultTempDirName = defaultOptions.tempDirName;
|
18 | if (existsSync(GITIGNORE_FILE)) {
|
19 | const gitignoreContent = await fs.readFile(GITIGNORE_FILE);
|
20 | if (!gitignoreContent.toString().includes(defaultTempDirName)) {
|
21 | const strykerTempFolderSpecification = `${os.EOL}# stryker temp files${os.EOL}${defaultTempDirName}${os.EOL}`;
|
22 | await fs.appendFile(GITIGNORE_FILE, strykerTempFolderSpecification);
|
23 | this.out('Note: Your .gitignore file has been updated to include recommended git ignore patterns for Stryker');
|
24 | }
|
25 | } else {
|
26 | this.out('No .gitignore file could be found. Please add the following to your .gitignore file: *.stryker-tmp');
|
27 | }
|
28 | }
|
29 | }
|