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