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