UNPKG

@flxbl-io/sfp

Version:

sfp is a CLI tool to help you manage your Salesforce projects in an artifact centric model

148 lines 13.1 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const core_1 = require("@salesforce/core"); const SfpCommand_1 = __importDefault(require("../../SfpCommand")); const Stage_1 = require("../../impl/Stage"); const fs = __importStar(require("fs-extra")); const sfp_logger_1 = __importStar(require("@flxbl-io/sfp-logger")); const core_2 = require("@oclif/core"); const sfdxflags_1 = require("../../flags/sfdxflags"); const TableConstants_1 = require("../../ui/TableConstants"); const path_1 = __importDefault(require("path")); const ImpactedPackagesResolver_1 = __importDefault(require("../../impl/impact/ImpactedPackagesResolver")); const ImpactedReleaseConfig_1 = __importDefault(require("../../impl/impact/ImpactedReleaseConfig")); const Table = require('cli-table'); core_1.Messages.importMessagesDirectory(__dirname); const messages = core_1.Messages.loadMessages('@flxbl-io/sfp', 'impact_release_config'); class ReleaseConfig extends SfpCommand_1.default { async execute() { // Read Manifest this.props = { branch: this.flags.branch, currentStage: Stage_1.Stage.VALIDATE, baseBranch: this.flags.basebranch, diffOptions: { useLatestGitTags: true, skipPackageDescriptorChange: false, }, }; if (this.flags.filterByChangesInBranch) { this.props.diffOptions.useBranchCompare = true; this.props.diffOptions.branch = this.flags.branch; this.props.diffOptions.baseBranch = this.flags.basebranch; } const impactedPackageResolver = new ImpactedPackagesResolver_1.default(this.props, new sfp_logger_1.ConsoleLogger()); let packagesToBeBuiltWithReasons = await impactedPackageResolver.getImpactedPackages(); let packageDiffTable = this.createDiffPackageScheduledDisplayedAsATable(packagesToBeBuiltWithReasons); const packagesToBeBuilt = Array.from(packagesToBeBuiltWithReasons.keys()); //Log Packages to be built sfp_logger_1.default.log((0, sfp_logger_1.COLOR_KEY_MESSAGE)('Packages impacted...')); sfp_logger_1.default.log(packageDiffTable.toString()); const impactedReleaseConfigResolver = new ImpactedReleaseConfig_1.default(); let impactedReleaseConfigs = impactedReleaseConfigResolver.getImpactedReleaseConfigs(packagesToBeBuilt, this.flags.releaseconfig, this.flags.explicitDependencyCheck, this.flags.filterBy); let impactedReleaseConfigTable = this.createImpactedReleaseConfigsAsATable(impactedReleaseConfigs.include); //Log Packages to be built sfp_logger_1.default.log((0, sfp_logger_1.COLOR_KEY_MESSAGE)('Release Configs impacted...')); sfp_logger_1.default.log(impactedReleaseConfigTable.toString()); const outputPath = path_1.default.join(process.cwd(), 'impacted-release-configs.json'); if (impactedReleaseConfigs && impactedReleaseConfigs.include.length > 0) fs.writeFileSync(outputPath, JSON.stringify(impactedReleaseConfigs, null, 2)); else fs.writeFileSync(outputPath, JSON.stringify([], null, 2)); if (!this.flags.filterBy) sfp_logger_1.default.log(`Impacted release configs written to ${outputPath}`); else sfp_logger_1.default.log(`Impacted release configs written to ${outputPath},${impactedReleaseConfigs.include[0]?.releaseName ? `filtered impacted release config found for ${impactedReleaseConfigs.include[0]?.releaseName}` : `no impacted release config found for ${this.flags.filterBy}`}`); return impactedReleaseConfigs.include; } createDiffPackageScheduledDisplayedAsATable(packagesToBeBuilt) { let tableHead = ['Package', 'Reason', 'Last Known Tag']; if (this.isMultiConfigFilesEnabled && this.props.currentStage == Stage_1.Stage.BUILD) { tableHead.push('Scratch Org Config File'); } let table = new Table({ head: tableHead, chars: TableConstants_1.ZERO_BORDER_TABLE, }); for (const pkg of packagesToBeBuilt.keys()) { let item = [ pkg, packagesToBeBuilt.get(pkg).reason, packagesToBeBuilt.get(pkg).tag ? packagesToBeBuilt.get(pkg).tag : '', ]; table.push(item); } return table; } createImpactedReleaseConfigsAsATable(impacatedReleaseConfigs) { let tableHead = ['Release/Domain Name', 'Pools', 'ReleaseConfig Path']; let table = new Table({ head: tableHead, chars: TableConstants_1.ZERO_BORDER_TABLE, }); for (const impactedReleaseConfig of impacatedReleaseConfigs) { let item = [ impactedReleaseConfig.releaseName, impactedReleaseConfig.pool, impactedReleaseConfig.filePath, ]; table.push(item); } return table; } } ReleaseConfig.flags = { loglevel: sfdxflags_1.loglevel, branch: core_2.Flags.string({ description: messages.getMessage('branchFlagDescription'), }), basebranch: core_2.Flags.string({ description: messages.getMessage('baseCommitOrBranchFlagDescription'), required: true, }), releaseconfig: core_2.Flags.string({ description: messages.getMessage('releaseConfigFileFlagDescription'), default: 'config', }), explicitDependencyCheck: core_2.Flags.boolean({ description: messages.getMessage('explicitDependencyCheckFlagDescription'), default: false, }), filterBy: core_2.Flags.string({ description: messages.getMessage('filterByFlagDescription'), }), filterByChangesInBranch: core_2.Flags.boolean({ description: messages.getMessage('filterByChangesInBranchFlagDescription'), }), }; ReleaseConfig.description = messages.getMessage('commandDescription'); exports.default = ReleaseConfig; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsZWFzZWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9pbXBhY3QvcmVsZWFzZWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQTRDO0FBQzVDLGtFQUEwQztBQUMxQyw0Q0FBeUM7QUFDekMsNkNBQStCO0FBQy9CLG1FQUFtRjtBQUNuRixzQ0FBb0M7QUFDcEMscURBQWlEO0FBQ2pELDREQUE0RDtBQUM1RCxnREFBd0I7QUFDeEIsMEdBQTJHO0FBQzNHLG9HQUFtRjtBQUNuRixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7QUFHbkMsZUFBUSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzVDLE1BQU0sUUFBUSxHQUFHLGVBQVEsQ0FBQyxZQUFZLENBQUMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLENBQUM7QUFFakYsTUFBcUIsYUFBYyxTQUFRLG9CQUFVO0lBOEJqRCxLQUFLLENBQUMsT0FBTztRQUNULGdCQUFnQjtRQUVoQixJQUFJLENBQUMsS0FBSyxHQUFHO1lBQ1QsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTTtZQUN6QixZQUFZLEVBQUUsYUFBSyxDQUFDLFFBQVE7WUFDNUIsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVTtZQUNqQyxXQUFXLEVBQUU7Z0JBQ1QsZ0JBQWdCLEVBQUUsSUFBSTtnQkFDdEIsMkJBQTJCLEVBQUUsS0FBSzthQUNyQztTQUNKLENBQUM7UUFFRixJQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsdUJBQXVCLEVBQ3JDLENBQUM7WUFDRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsR0FBQyxJQUFJLENBQUM7WUFDN0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFDLElBQUks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