UNPKG

sfdx-cpq-scripts-deployment

Version:
83 lines 3.65 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const path_1 = require("path"); const fs_1 = require("fs"); const command_1 = require("@salesforce/command"); const utils_1 = require("../../utils"); const defaultScript_1 = require("../../scriptsDefaultValues/defaultScript"); const defaultPackage_1 = require("../../scriptsDefaultValues/defaultPackage"); const defaultTypings_1 = require("../../scriptsDefaultValues/defaultTypings"); class Org extends command_1.SfdxCommand { async run() { const scriptName = await this.ux.prompt("Script name:", { required: true, }); const quoteFields = await this.askForNeededFields("Quote fields"); const quoteLineGroupFields = await this.askForNeededFields("Quote line group fields"); const quoteLineFields = await this.askForNeededFields("Quote line fields"); const consumptionScheduleFields = await this.askForNeededFields("Consumpption schedule fields"); const consumptionRateFields = await this.askForNeededFields("Consumption Rates fields"); const scriptConfig = { scriptName, quoteFields, quoteLineGroupFields, quoteLineFields, consumptionScheduleFields, consumptionRateFields, }; const path = await this.generateFilesForScript(scriptConfig); return { ...scriptConfig, path }; } async generateFilesForScript(config) { this.ux.startSpinner("Generating custom script files"); const rootProjectDir = (0, utils_1.getRootSfdxProjectDir)(); const cpqScriptsFolder = rootProjectDir + path_1.sep + "customCpqScripts"; if (!(0, fs_1.existsSync)(cpqScriptsFolder)) { await fs_1.promises.mkdir(cpqScriptsFolder); } const scriptRootDir = cpqScriptsFolder + path_1.sep + config.scriptName; await fs_1.promises.mkdir(scriptRootDir); await Promise.all([ this.generateExampleScript(scriptRootDir), this.generateScriptPackageJson(scriptRootDir, config), this.generateExampleTypingsScript(scriptRootDir), ]); this.ux.stopSpinner(); } async generateExampleScript(dir) { const fileName = dir + path_1.sep + "index.js"; return fs_1.promises.writeFile(fileName, defaultScript_1.default); } async generateExampleTypingsScript(dir) { const fileName = dir + path_1.sep + "index.d.ts"; return fs_1.promises.writeFile(fileName, defaultTypings_1.default); } async generateScriptPackageJson(dir, config) { const cpqPackageJson = { ...defaultPackage_1.default, cpqScriptConfig: { quoteLineFields: config.quoteLineFields, quoteFields: config.quoteFields, quoteLineGroupFields: config.quoteLineGroupFields, consumptionScheduleFields: config.consumptionScheduleFields, consumptionRateFields: config.consumptionRateFields, }, }; const fileName = dir + path_1.sep + "package.json"; return fs_1.promises.writeFile(fileName, JSON.stringify(cpqPackageJson, null, 4)); } async askForNeededFields(promptName) { return this.ux .prompt(promptName, { required: false }) .then((response) => { if (response == null) { return []; } return response .split(",") .map((dirtyField) => dirtyField.trim()); }); } } exports.default = Org; //# sourceMappingURL=generate.js.map