gvegas-cfc
Version:
Create file from Template
58 lines (57 loc) • 2.26 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.FileService = void 0;
const fs_1 = require("fs");
const path_1 = require("path");
const replaceTemplate = (filename, replace) => {
return filename.replace(/Template/gim, replace);
};
class FileService {
create(pathToTemplate, pathToOutput, outputFilename) {
const outputPath = (0, path_1.join)(pathToOutput, outputFilename);
if (!this.getFilenameData(outputFilename).extension) {
(0, fs_1.mkdirSync)(outputPath, { recursive: true });
}
this.createNestedFiles(pathToTemplate, outputPath, outputFilename);
}
getByName(filenameWithExtension) {
const content = (0, fs_1.readFileSync)(filenameWithExtension, "utf8");
const filenameData = this.getFilenameData(filenameWithExtension);
return {
content,
...filenameData,
};
}
getFilenameData(path) {
const execResult = /\.[^.]+$/.exec(path);
let name, extension;
if (execResult) {
extension = execResult[0];
name = execResult.input.split(extension)[0];
}
else {
name = path;
}
return {
name,
extension,
};
}
createNestedFiles(pathToTemplate, pathToOutput, outputFilename) {
(0, fs_1.mkdirSync)(pathToOutput, { recursive: true });
(0, fs_1.readdirSync)(pathToTemplate).forEach((name) => {
const rootFilenameData = this.getFilenameData(name);
const currentPathToOutput = (0, path_1.join)(pathToOutput, replaceTemplate(name, outputFilename));
const currentPathToTemplate = (0, path_1.join)(pathToTemplate, name);
if (rootFilenameData.extension) {
const content = (0, fs_1.readFileSync)(currentPathToTemplate, "utf-8");
(0, fs_1.writeFileSync)(currentPathToOutput, replaceTemplate(content, outputFilename));
}
else {
(0, fs_1.mkdirSync)(currentPathToOutput, { recursive: true });
this.createNestedFiles(currentPathToTemplate, currentPathToOutput, outputFilename);
}
});
}
}
exports.FileService = FileService;