UNPKG

1.17 kBPlain TextView Raw
1import os from 'os';
2import { existsSync, promises as fs } from 'fs';
3
4import { tokens } from '@stryker-mutator/api/plugin';
5
6import { defaultOptions } from '../config/index.js';
7
8import { initializerTokens } from './index.js';
9
10const GITIGNORE_FILE = '.gitignore';
11
12export 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}