UNPKG

sfdx-hardis

Version:

Swiss-army-knife Toolbox for Salesforce. Allows you to define a complete CD/CD Pipeline. Orchestrate base commands and assist users with interactive wizards

72 lines 2.52 kB
import c from "chalk"; import { execCommand, uxLog } from "./index.js"; import { analyzeDeployErrorLogs } from "./deployTips.js"; import { generateApexCoverageOutputFile } from "./deployUtils.js"; export async function wrapSfdxCoreCommand(commandBase, argv, commandThis, debug = false) { const endArgs = [...argv].map((arg) => { // Add quotes to avoid problems if arguments contain spaces if (!arg.startsWith("-") && !arg.startsWith(`"`) && !arg.startsWith(`'`)) { arg = `"${arg}"`; } return arg; }); // Remove sfdx-hardis arguments const debugPos = endArgs.indexOf("--debug"); if (debugPos > -1) { endArgs.splice(debugPos, 1); } const dPos = endArgs.indexOf("-d"); if (dPos > -1) { endArgs.splice(dPos, 1); } const websocketPos = endArgs.indexOf("--websocket"); if (websocketPos > -1) { endArgs.splice(websocketPos, 2); } const skipAuthPos = endArgs.indexOf("--skipauth"); if (skipAuthPos > -1) { endArgs.splice(skipAuthPos, 1); } const checkCoveragePos = endArgs.indexOf("--checkcoverage"); if (checkCoveragePos > -1) { endArgs.splice(checkCoveragePos, 1); } // Build wrapped sfdx command const commandsArgs = endArgs.join(" "); const command = commandBase + " " + commandsArgs; let deployRes; // Call wrapped sfdx command try { deployRes = await execCommand(command, commandThis, { output: true, debug: debug, fail: true, }); process.exitCode = 0; await generateApexCoverageOutputFile(); } catch (e) { await generateApexCoverageOutputFile(); // Add deployment tips in error logs const { errLog } = await analyzeDeployErrorLogs(e.stdout + e.stderr, true, { check: endArgs.includes("--checkonly") }); uxLog("error", commandThis, c.red(c.bold("Unfortunately, there were errors."))); if (process.env?.SFDX_HARDIS_DEPLOY_ERR_COLORS === "false") { uxLog("other", this, "\n" + errLog); } else { uxLog("error", this, c.red("\n" + errLog)); } deployRes = errLog; if (e.code) { process.exitCode = e.code; } else { process.exitCode = 1; } } if (typeof deployRes === 'object') { deployRes.stdout = JSON.stringify(deployRes); } return { outputstring: deployRes }; } //# sourceMappingURL=wrapUtils.js.map