yogeshs-utilities
Version:
61 lines • 3.04 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const fs_1 = require("fs");
const path_1 = require("path");
const libs_1 = require("../../libs");
const consoleLogger = new libs_1.ConsoleLogger(__filename);
class PathExtensions {
constructor() {
this.changeExtension = function (dirPath, ext) {
var allFiles = (0, fs_1.readdirSync)(dirPath);
allFiles.forEach(function (file) {
var oldPath = (0, path_1.join)(dirPath, file);
var baseName = (0, path_1.basename)(oldPath);
if (!(baseName.lastIndexOf(ext) === -1))
return;
var newPath = (0, path_1.join)(dirPath, file).concat(ext);
(0, fs_1.renameSync)(oldPath, newPath);
});
};
this.changeExtensions = function (rootPath, ext, dirToLook, dirToSkip = []) {
if (!(0, fs_1.existsSync)(rootPath))
return;
dirToLook = Array.isArray(dirToLook) ? dirToLook : [];
dirToSkip = Array.isArray(dirToSkip) ? Array.from(new Map(dirToSkip.map(s => [s.toLowerCase(), s])).values()) : [];
consoleLogger.log(`Changing file extension from dir: `, { directories: dirToLook });
for (const dir of dirToLook) {
var dirOrFiles = [];
const dirPath = (0, path_1.resolve)(rootPath, dir);
if (!(0, fs_1.existsSync)(dirPath))
continue;
var directories = (0, fs_1.readdirSync)(dirPath);
directories.forEach(d => dirOrFiles.push(d));
dirOrFiles = dirOrFiles.filter(d => !(d === ""));
var uniqueDirectories = Array.from(new Set(dirOrFiles));
var remainingDirOrFiles = uniqueDirectories.filter(df => {
return dirToSkip.every(d => d !== df);
});
let total = remainingDirOrFiles.length;
const bar = consoleLogger.showProgress(total);
consoleLogger.log(`Total files to change extensions: ${total}`);
remainingDirOrFiles.forEach((file, idx) => {
bar.tick({ done: ++idx, length: total });
var oldPath = (0, path_1.join)(rootPath, dir, file);
if (!(0, fs_1.existsSync)(oldPath))
return;
const stats = (0, fs_1.statSync)(oldPath);
// @ts-ignore
if (stats.isDirectory())
return this.changeExtension(oldPath, ext);
var baseName = (0, path_1.basename)(oldPath).toLowerCase();
if (baseName.lastIndexOf(ext) !== -1)
return;
var newPath = (0, path_1.join)(rootPath, dir, file).concat(ext);
(0, fs_1.renameSync)(oldPath, newPath);
});
}
};
}
}
exports.default = PathExtensions;
//# sourceMappingURL=path.js.map