Skip to content

Commit e1d205a

Browse files
committed
Adds recursive option
1 parent da5de18 commit e1d205a

File tree

2 files changed

+39
-13
lines changed

2 files changed

+39
-13
lines changed

index.ts

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,22 +12,34 @@ commander
1212
"Array of transformations to be applied in order",
1313
"[]"
1414
)
15+
.option("-R, --recursive", "Perform recursive rename")
1516
.parse(process.argv);
1617

17-
const { match, flags, replace, transformations } = commander;
18+
const { match, flags, replace, transformations, recursive } = commander;
1819

1920
const transformationsArray = JSON.parse(transformations);
2021

2122
const currentDirectory = process.cwd();
2223

23-
fs.readdirSync(currentDirectory).forEach(node =>
24+
const rename = (currentDirectory: string) => (node: string) =>
2425
fs.rename(
2526
`${currentDirectory}/${node}`,
2627
`${currentDirectory}/${node.replace(
2728
new RegExp(match, flags),
28-
transformationsArray.length
29-
? transform(replace)(transformationsArray)
30-
: replace
29+
transform(replace)(transformationsArray)
3130
)}`
32-
)
31+
);
32+
33+
const renameRecursively = (currentDirectory: string) => (node: string) => {
34+
const fullPathToNode = `${currentDirectory}/${node}`;
35+
36+
if (fs.lstatSync(fullPathToNode).isDirectory()) {
37+
fs.readdirSync(fullPathToNode).forEach(renameRecursively(fullPathToNode));
38+
} else {
39+
rename(currentDirectory)(node);
40+
}
41+
};
42+
43+
fs.readdirSync(currentDirectory).forEach(
44+
recursive ? renameRecursively(currentDirectory) : rename(currentDirectory)
3345
);

package-lock.json

Lines changed: 21 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)