@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
JavaScript
;
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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