UNPKG

@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
"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 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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