UNPKG

netsuite-starter

Version:

Scaffold to build NetSuite account customizations

120 lines (107 loc) 3.66 kB
import * as dotenv from "dotenv"; import {prompt as inquirerPrompt, Separator} from "inquirer"; import {injectFiles} from "./injector"; // @ts-ignore import * as recordTypes from "./types.json"; interface ICustomAnswer { name: string; type: string; } export const makeTemplate = () => { dotenv.config(); const program = inquirerPrompt([{ type: "list", name: "type", message: "Select script types to create:", choices: [ new Separator("-- Native --"), {name: "Bundle", value: "bundle"}, {name: "Client", value: "client"}, {name: "Client Form", value: "form"}, {name: "Map/Reduce", value: "mapreduce"}, {name: "Mass Update", value: "massupdate"}, {name: "Portlet", value: "portlet"}, {name: "Reslet", value: "restlet"}, {name: "Scheduled", value: "scheduled"}, {name: "Suitelet", value: "suitelet"}, {name: "User Event", value: "userevent"}, {name: "Workflow Action", value: "workflow"}, new Separator("-- Auxiliary --"), {name: "Bloc", value: "bloc_bloc"}, {name: "Configuration", value: "config"}, {name: "Repository", value: "repository_repo"}, {name: "Static", value: "static_static"}, {name: "Types", value: "types"}, {name: "Utility", value: "util"}, ] }, { type: "input", name: "name", message: "Enter script name:", default(): string { return "None"; }, validate(s: string): boolean { const c = new RegExp("^[a-zA-Z_]*$"); const t = c.test(s); if (!t) { console.error("Must be snake case (name_of_file)"); } return t; } }, { type: "checkbox", name: "types", choices: recordTypes, message: "Enter record types used:", when: (answers: ICustomAnswer) => { return [ "bloc_bloc", "bundle", "config", "mapreduce", "portlet", "repository_repo", "scheduled", "static_static", "util", ].indexOf(answers.type) === -1; } }, { type: "input", name: "description", message: "Enter description:", default(): string { return "No description"; } }, { type: "input", name: "record_type", message: "Enter record type:", when: (answers: ICustomAnswer) => { return answers.type === "repository_repo"; } }]); injectFiles(program); }; export const makeLibrary = () => { dotenv.config(); const program = inquirerPrompt([{ type: "list", name: "type", message: "Select library to import:", choices: [ {name: "Browser", value: "lib_browser"}, {name: "Cache", value: "lib_cache"}, {name: "CSV", value: "lib_csv"}, {name: "Custom", value: "lib_custom"}, {name: "EDI", value: "lib_edi"}, {name: "Governance", value: "lib_governance"}, {name: "Search", value: "lib_search"}, {name: "Log", value: "lib_log"}, {name: "SFTP", value: "lib_sftp"}, {name: "Task", value: "lib_task"}, ] }]); injectFiles(program); };