import os from 'os'; import { existsSync, promises as fs } from 'fs'; import { tokens } from '@stryker-mutator/api/plugin'; import { defaultOptions } from '../config/index.js'; import { initializerTokens } from './index.js'; const GITIGNORE_FILE = '.gitignore'; export class GitignoreWriter { public static inject = tokens(initializerTokens.out); constructor(private readonly out: typeof console.log) {} public async addStrykerTempFolder(): Promise { const defaultTempDirName = defaultOptions.tempDirName; if (existsSync(GITIGNORE_FILE)) { const gitignoreContent = await fs.readFile(GITIGNORE_FILE); if (!gitignoreContent.toString().includes(defaultTempDirName)) { const strykerTempFolderSpecification = `${os.EOL}# stryker temp files${os.EOL}${defaultTempDirName}${os.EOL}`; await fs.appendFile(GITIGNORE_FILE, strykerTempFolderSpecification); this.out('Note: Your .gitignore file has been updated to include recommended git ignore patterns for Stryker'); } } else { this.out('No .gitignore file could be found. Please add the following to your .gitignore file: *.stryker-tmp'); } } }