sfdx-cpq-scripts-deployment
Version:
Deploy cpq scipts with sfdx (unofficial plugin)
83 lines • 3.65 kB
JavaScript
;
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