@flxbl-io/sfp
Version:
sfp is a CLI tool to help you manage your Salesforce projects in an artifact centric model
103 lines • 9.15 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 fs = __importStar(require("fs-extra"));
const yaml = require('js-yaml');
const path_1 = __importDefault(require("path"));
class ImpactedRelaseConfigResolver {
getImpactedReleaseConfigs(impactedPackages, configDir, isExplicitDependencyCheckEnabled = false, filterBy) {
const impactedReleaseConfigs = [];
fs.readdirSync(configDir).forEach((file) => {
const filePath = path_1.default.join(configDir, file);
const fileContent = fs.readFileSync(filePath, 'utf8');
const releaseConfig = yaml.load(fileContent);
if (releaseConfig.releaseName) {
let releaseImpactedPackages = [];
//Its a releasedefn,
if (releaseConfig.includeOnlyArtifacts) {
releaseImpactedPackages = releaseConfig.includeOnlyArtifacts.filter((artifact) => impactedPackages.includes(artifact));
}
else if (releaseConfig.excludeArtifacts) {
releaseImpactedPackages = impactedPackages.filter((artifact) => !releaseConfig.excludeArtifacts.includes(artifact));
}
// handle dependencyOn, only do impact if there is atleast one package that is impacted
if (releaseImpactedPackages.length > 0 && isExplicitDependencyCheckEnabled && releaseConfig.dependencyOn) {
let dependencyImpactedPackages = releaseConfig.dependencyOn.filter((artifact) => impactedPackages.includes(artifact));
releaseImpactedPackages.push(dependencyImpactedPackages);
}
if (releaseImpactedPackages.length > 0) {
if (filterBy) {
if (releaseConfig.releaseName.includes(filterBy)) {
impactedReleaseConfigs.push({
releaseName: releaseConfig.releaseName,
pool: releaseConfig.pool
? releaseConfig.pool
: releaseConfig.releaseName,
filePath: filePath,
impactedPackages: releaseImpactedPackages, // Including the impacted packages
});
}
}
else {
impactedReleaseConfigs.push({
releaseName: releaseConfig.releaseName,
pool: releaseConfig.pool
? releaseConfig.pool
: releaseConfig.releaseName,
filePath: filePath,
impactedPackages: releaseImpactedPackages, // Including the impacted packages
});
}
}
}
});
const sortedImpactedReleaseConfigs = impactedReleaseConfigs.sort((a, b) => {
if (!a.impactedPackages.length && !b.impactedPackages.length)
return 0;
if (!a.impactedPackages.length)
return 1; // Move releases with no impacted packages to the end
if (!b.impactedPackages.length)
return -1; // Same as above
const indexA = impactedPackages.indexOf(a.impactedPackages[0]);
const indexB = impactedPackages.indexOf(b.impactedPackages[0]);
if (indexA === -1 && indexB === -1)
return 0; // Neither package is in impactedPackages
if (indexA === -1)
return 1; // Move releases with unknown impacted packages to the end
if (indexB === -1)
return -1; // Same as above
return indexA - indexB; // Sort based on index in impactedPackages
});
const output = {
include: sortedImpactedReleaseConfigs,
};
return output;
}
}
exports.default = ImpactedRelaseConfigResolver;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW1wYWN0ZWRSZWxlYXNlQ29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ltcGwvaW1wYWN0L0ltcGFjdGVkUmVsZWFzZUNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQStCO0FBQy9CLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNoQyxnREFBd0I7QUFFeEIsTUFBcUIsNEJBQTRCO0lBRXRDLHlCQUF5QixDQUFDLGdCQUFnQixFQUFFLFNBQVMsRUFBQyxtQ0FBeUMsS0FBSyxFQUFFLFFBQWlCO1FBQzFILE1BQU0sc0JBQXNCLEdBQUcsRUFBRSxDQUFDO1FBRWxDLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDdkMsTUFBTSxRQUFRLEdBQUcsY0FBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDNUMsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDdEQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUU3QyxJQUFJLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSx1QkFBdUIsR0FBRyxFQUFFLENBQUM7Z0JBQ2pDLG9CQUFvQjtnQkFDcEIsSUFBSSxhQUFhLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztvQkFDckMsdUJBQXVCLEdBQUcsYUFBYSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQzdFLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FDdEMsQ0FBQztnQkFDTixDQUFDO3FCQUFNLElBQUksYUFBYSxDQUFDLGdC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