1import { TransformFilesContent, FileContentTransformStepSettings } from './TransformFilesContent';
2import chalk from 'chalk';
3import path from 'path';
4import fs from 'fs-extra';
5import { findFiles } from '../utils';
6
7export class TransformFilesName extends TransformFilesContent {
8  constructor(settings: FileContentTransformStepSettings) {
9    super(settings);
10  }
11
12  async execute() {
13    const workDirectory = this.getWorkingDirectory();
14
15    this.logSubStep(
16      `�� find ${chalk.yellow(this.find.toString())} in files names in path ${chalk.green(
17        this.overrideWorkingDirectory() || '<workingDirectory>'
18      )}/${chalk.yellow(this.filePattern)} and replace with ${chalk.magenta(this.replace)}`
19    );
20
21    const files = await findFiles(workDirectory, this.filePattern);
22    await Promise.all(
23      files.map((file) => {
24        const fileName = path.basename(file).replace(this.find, this.replace);
25        const parent = path.dirname(file);
26
27        return fs.rename(file, path.join(parent, fileName));
28      })
29    );
30  }
31}
32
33export function renameIOSFiles({
34  find,
35  replace,
36}: {
37  find: string;
38  replace: string;
39}): TransformFilesName {
40  return new TransformFilesName({
41    filePattern: path.join('ios', '**', `*${find}*.@(m|h)`),
42    find,
43    replace,
44  });
45}
46