1*53977629SŁukasz Kosmatyimport chalk from 'chalk'; 2*53977629SŁukasz Kosmatyimport fs from 'fs-extra'; 3*53977629SŁukasz Kosmaty 4*53977629SŁukasz Kosmatyimport { findFiles } from '../utils'; 5*53977629SŁukasz Kosmatyimport { Task } from './Task'; 6*53977629SŁukasz Kosmaty 7*53977629SŁukasz Kosmatyexport type RemoveFilesSettings = { 8*53977629SŁukasz Kosmaty source?: string; 9*53977629SŁukasz Kosmaty filePattern: string; 10*53977629SŁukasz Kosmaty}; 11*53977629SŁukasz Kosmaty 12*53977629SŁukasz Kosmatyexport class RemoveFiles extends Task { 13*53977629SŁukasz Kosmaty protected readonly source?: string; 14*53977629SŁukasz Kosmaty protected readonly filePattern: string; 15*53977629SŁukasz Kosmaty 16*53977629SŁukasz Kosmaty constructor({ source, filePattern }: RemoveFilesSettings) { 17*53977629SŁukasz Kosmaty super(); 18*53977629SŁukasz Kosmaty this.source = source; 19*53977629SŁukasz Kosmaty this.filePattern = filePattern; 20*53977629SŁukasz Kosmaty } 21*53977629SŁukasz Kosmaty 22*53977629SŁukasz Kosmaty protected overrideWorkingDirectory(): string { 23*53977629SŁukasz Kosmaty return this.source || '<workingDirectory>'; 24*53977629SŁukasz Kosmaty } 25*53977629SŁukasz Kosmaty 26*53977629SŁukasz Kosmaty async execute() { 27*53977629SŁukasz Kosmaty const workDirectory = this.getWorkingDirectory(); 28*53977629SŁukasz Kosmaty 29*53977629SŁukasz Kosmaty this.logSubStep( 30*53977629SŁukasz Kosmaty ` Remove ${chalk.green(this.overrideWorkingDirectory())}/${chalk.yellow(this.filePattern)}` 31*53977629SŁukasz Kosmaty ); 32*53977629SŁukasz Kosmaty 33*53977629SŁukasz Kosmaty const files = await findFiles(workDirectory, this.filePattern); 34*53977629SŁukasz Kosmaty await Promise.all( 35*53977629SŁukasz Kosmaty files.map((file) => { 36*53977629SŁukasz Kosmaty return fs.remove(file); 37*53977629SŁukasz Kosmaty }) 38*53977629SŁukasz Kosmaty ); 39*53977629SŁukasz Kosmaty } 40*53977629SŁukasz Kosmaty} 41