redux-feature-generator
Version:
Generate Redux feature code from the command line
64 lines (63 loc) • 3.35 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateFiles = void 0;
/**
* @file rfg.ts
* @version 1.4.0
* @fileoverview Redux Feature Generator (RFG) is used create the template files.
*/
const path_1 = require("path");
const fs_1 = require("fs");
const rfgArgs_1 = require("./rfgArgs");
const helpers_1 = require("./helpers");
const templates = [
(0, path_1.resolve)(__dirname, "../../templates/basic-typescript/template.module.css.tpl"),
(0, path_1.resolve)(__dirname, "../../templates/basic-typescript/template.spec.ts.tpl"),
(0, path_1.resolve)(__dirname, "../../templates/basic-typescript/Template.tsx.tpl"),
(0, path_1.resolve)(__dirname, "../../templates/basic-typescript/templateAPI.ts.tpl"),
(0, path_1.resolve)(__dirname, "../../templates/basic-typescript/templateSlice.ts.tpl")
];
const generateFiles = (args) => {
let projectDirectory;
if (args.length === 3) {
projectDirectory = args[1];
}
else if (args.length === 2 && (0, fs_1.existsSync)(args[1])) {
projectDirectory = args[1];
}
else {
projectDirectory = process.cwd() + "/src/features";
}
const outFiles = [
(0, path_1.join)(`${projectDirectory}/${(0, helpers_1.lowercase)(args[0])}/${(0, helpers_1.lowercase)(args[0])}.module.css`),
(0, path_1.join)(`${projectDirectory}/${(0, helpers_1.lowercase)(args[0])}/${(0, helpers_1.lowercase)(args[0])}.spec.ts`),
(0, path_1.join)(`${projectDirectory}/${(0, helpers_1.lowercase)(args[0])}/${(0, helpers_1.capitalize)(args[0])}.tsx`),
(0, path_1.join)(`${projectDirectory}/${(0, helpers_1.lowercase)(args[0])}/${(0, helpers_1.lowercase)(args[0])}API.ts`),
(0, path_1.join)(`${projectDirectory}/${(0, helpers_1.lowercase)(args[0])}/${(0, helpers_1.lowercase)(args[0])}Slice.ts`)
];
// Test to see if there is a src/features folder in the project directory
if ((0, fs_1.existsSync)(projectDirectory)) {
for (let i = 0; i < templates.length; i++) {
if ((0, fs_1.existsSync)((0, path_1.resolve)(templates[i]))) {
let fileBuf = (0, fs_1.readFileSync)(templates[i], { encoding: "utf-8" });
fileBuf = (0, helpers_1.replaceAll)((0, helpers_1.replaceAll)(fileBuf, "${featureNameUppercase}", (0, helpers_1.capitalize)(args[0])), "${featureNameLowercase}", args[0]);
// Make sure the generation will work
if (!(0, fs_1.existsSync)((0, path_1.join)(`${projectDirectory}/${args[0]}/`))) {
(0, fs_1.mkdirSync)((0, path_1.join)(`${projectDirectory}/${args[0]}/`));
process.stdout.write(`Writing File: ${outFiles[i]}\n`);
(0, fs_1.writeFileSync)(outFiles[i], fileBuf, { encoding: "utf-8", flag: "w+" });
}
else {
process.stdout.write(`Writing File: ${outFiles[i]}\n`);
(0, fs_1.writeFileSync)(outFiles[i], fileBuf, { encoding: "utf-8", flag: "w+" });
}
}
}
process.stdout.write("Generation Succeeded\n");
}
else { // Valid Feature Folder must be found to attempt generation
return rfgArgs_1.RFG_STATUS.FOLDER_NOT_FOUND_ERROR;
}
return rfgArgs_1.RFG_STATUS.OK;
};
exports.generateFiles = generateFiles;
;