Skip to content

Instantly share code, notes, and snippets.

@finalclass
Last active March 27, 2023 21:11
Show Gist options
  • Save finalclass/5697373 to your computer and use it in GitHub Desktop.
Save finalclass/5697373 to your computer and use it in GitHub Desktop.
recursively renames every file and directory in the script path from camelCase and UpperCamelCase to dash-case
/*jshint node:true*/
'use strict';
/**
* This scripts recursively renames every file and directory in the script path
* from camelCase and UpperCamelCase to dash-case
*
* Do a backup before executing this script
*
* @lecense MIT
* @author Szymon Wygnański <s@finalclass.net>
*/
var fs = require('fs'),
path = require('path');
function camelToDash(text) {
return text.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
}
function renameDir(dir) {
var files = fs.readdirSync(dir),
f,
fileName,
path,
newPath,
file;
for (f = 0; f < files.length; f += 1) {
fileName = files[f];
path = dir + '/' + fileName;
file = fs.statSync(path);
newPath = dir + '/' + camelToDash(fileName);
fs.renameSync(path, newPath);
if (file.isDirectory()) {
renameDir(newPath);
}
}
}
renameDir(__dirname);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment