netsuite-starter
Version:
Scaffold to build NetSuite account customizations
70 lines (69 loc) • 3.5 kB
JavaScript
(function (factory) {
if (typeof module === "object" && typeof module.exports === "object") {
var v = factory(require, exports);
if (v !== undefined) module.exports = v;
}
else if (typeof define === "function" && define.amd) {
define(["require", "exports", "change-case", "ejs", "fs", "moment"], factory);
}
})(function (require, exports) {
Object.defineProperty(exports, "__esModule", { value: true });
exports.injectFiles = void 0;
var change_case_1 = require("change-case");
var ejs_1 = require("ejs");
var fs_1 = require("fs");
var moment = require("moment");
var AnswerType;
(function (AnswerType) {
AnswerType[AnswerType["File"] = 0] = "File";
AnswerType[AnswerType["FolderFile"] = 1] = "FolderFile";
AnswerType[AnswerType["Library"] = 2] = "Library";
})(AnswerType || (AnswerType = {}));
var getAnswerType = function (answers) {
var hasFolder = answers.type.indexOf("_") !== -1;
switch (true) {
case hasFolder && !answers.description:
return AnswerType.Library;
case hasFolder && !!answers.description:
return AnswerType.FolderFile;
default:
return AnswerType.File;
}
};
var injectFiles = function (program) {
program.then(function (answers) {
var today = moment(new Date());
var answerType = getAnswerType(answers);
answers.name = answers.name ? "_" + answers.name.replace("None", "") : "";
var templateFile = __dirname + "/templates/" + answers.type + ".txt";
var fileName = "source/" + process.env.FILE_PREFIX + answers.name + "_" + answers.type + ".ts";
if (answerType === AnswerType.Library || answerType === AnswerType.FolderFile) {
var _a = answers.type.split("_"), folder = _a[0], type = _a[1];
var name_1 = answerType === AnswerType.Library ? "" : "_" + answers.name;
var typeName = answerType === AnswerType.Library ? type + "_" + folder : folder;
fileName = "source/" + folder + "/" + process.env.FILE_PREFIX + name_1 + "_" + typeName + ".ts";
if (!fs_1.existsSync("source/" + folder)) {
fs_1.mkdirSync("source/" + folder);
}
}
fileName = fileName.replace(/___/g, "_");
fileName = fileName.replace(/__/g, "_");
var content = fs_1.readFileSync(templateFile, "utf8");
fs_1.writeFileSync(fileName, ejs_1.render(content, {
// Generics
date: today.format("MM/DD/YYYY"),
// User
user_name: process.env.USER_NAME,
user_email: process.env.EMAIL,
company_name: process.env.COMPANY_NAME,
// Names
namePascal: answerType !== AnswerType.Library ? change_case_1.pascalCase(answers.name) : "",
// Details
types: (answerType !== AnswerType.Library && answers.types && answers.types.length > 0) ? answers.types.join(",") : "None",
description: answerType !== AnswerType.Library ? answers.description : "",
record_type: answerType !== AnswerType.Library ? answers.record_type : "",
}));
});
};
exports.injectFiles = injectFiles;
});