@flxbl-io/sfp
Version:
sfp is a CLI tool to help you manage your Salesforce projects in an artifact centric model
134 lines • 10.8 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 PackageDiffImpl_1 = __importDefault(require("../../core/package/diff/PackageDiffImpl"));
const ProjectConfig_1 = __importDefault(require("../../core/project/ProjectConfig"));
const SfpPackage_1 = require("../../core/package/SfpPackage");
const fs = __importStar(require("fs-extra"));
const BuildCollections_1 = __importDefault(require("../parallelBuilder/BuildCollections"));
class ImpactedPackageResolver {
constructor(props, logger) {
this.props = props;
this.logger = logger;
}
async getImpactedPackages() {
let projectConfig = ProjectConfig_1.default.getSFDXProjectConfig(this.props.projectDirectory);
let packagesToBeBuilt = this.getPackagesToBeBuilt(this.props.projectDirectory);
let packagesToBeBuiltWithReasons = await this.filterPackagesToBeBuiltByChanged(this.props.projectDirectory, projectConfig, packagesToBeBuilt);
return packagesToBeBuiltWithReasons;
}
/**
* Get the file path of the forceignore for current stage, from project config.
* Returns null if a forceignore path is not defined in the project config for the current stage.
*
* @param projectConfig
* @param currentStage
*/
getPathToForceIgnoreForCurrentStage(projectConfig, currentStage) {
let stageForceIgnorePath;
let ignoreFiles = projectConfig.plugins?.sfp?.ignoreFiles;
if (ignoreFiles) {
Object.keys(ignoreFiles).forEach((key) => {
if (key.toLowerCase() == currentStage) {
stageForceIgnorePath = ignoreFiles[key];
}
});
}
if (stageForceIgnorePath) {
if (fs.existsSync(stageForceIgnorePath)) {
return stageForceIgnorePath;
}
else
throw new Error(`${stageForceIgnorePath} forceignore file does not exist`);
}
else
return null;
}
async filterPackagesToBeBuiltByChanged(projectDirectory, projectConfig, allPackagesInRepo) {
let packagesToBeBuilt = new Map();
let buildCollections = new BuildCollections_1.default(projectDirectory);
if (this.props.diffOptions)
this.props.diffOptions.pathToReplacementForceIgnore = this.getPathToForceIgnoreForCurrentStage(projectConfig, this.props.currentStage);
for await (const pkg of allPackagesInRepo) {
let diffImpl = new PackageDiffImpl_1.default(this.logger, pkg, this.props.projectDirectory, this.props.diffOptions);
let packageDiffCheck = await diffImpl.exec();
if (packageDiffCheck.isToBeBuilt) {
packagesToBeBuilt.set(pkg, {
reason: packageDiffCheck.reason,
tag: packageDiffCheck.tag,
});
//Add Bundles
if (buildCollections.isPackageInACollection(pkg)) {
buildCollections.listPackagesInCollection(pkg).forEach((packageInCollection) => {
if (!packagesToBeBuilt.has(packageInCollection)) {
packagesToBeBuilt.set(packageInCollection, {
reason: 'Part of a build collection',
});
}
});
}
}
}
return packagesToBeBuilt;
}
getPackagesToBeBuilt(projectDirectory, includeOnlyPackages) {
let projectConfig = ProjectConfig_1.default.getSFDXProjectConfig(projectDirectory);
let sfdxpackages = [];
let packageDescriptors = projectConfig['packageDirectories'].filter((pkg) => {
if (pkg.ignoreOnStage?.find((stage) => {
stage = stage.toLowerCase();
return stage === this.props.currentStage;
}))
return false;
else
return true;
});
//Filter Packages
if (includeOnlyPackages) {
packageDescriptors = packageDescriptors.filter((pkg) => {
if (includeOnlyPackages.find((includedPkg) => {
return includedPkg == pkg.package;
}))
return true;
else
return false;
});
}
// Ignore aliasfied packages on stages fix #1289
packageDescriptors = packageDescriptors.filter((pkg) => {
return !(this.props.currentStage === 'prepare' && pkg.aliasfy && pkg.type !== SfpPackage_1.PackageType.Data);
});
for (const pkg of packageDescriptors) {
if (pkg.package && pkg.versionNumber)
sfdxpackages.push(pkg['package']);
}
return sfdxpackages;
}
}
exports.default = ImpactedPackageResolver;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW1wYWN0ZWRQYWNrYWdlc1Jlc29sdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ltcGwvaW1wYWN0L0ltcGFjdGVkUGFja2FnZXNSZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsOEZBQThGO0FBRTlGLHFGQUE2RDtBQUM3RCw4REFBNEQ7QUFDNUQsNkNBQStCO0FBRS9CLDJGQUFtRTtBQVluRSxNQUFxQix1QkFBdUI7SUFHeEMsWUFBb0IsS0FBMkIsRUFBVSxNQUFjO1FBQW5ELFVBQUssR0FBTCxLQUFLLENBQXNCO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUN2RSxDQUFDO0lBRUQsS0FBSyxDQUFDLG1CQUFtQjtRQUNyQixJQUFJLGFBQWEsR0FBRyx1QkFBYSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNwRixJQUFJLGlCQUFpQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDL0UsSUFBSSw0QkFBNEIsR0FBRyxNQUFNLElBQUksQ0FBQyxnQ0FBZ0MsQ0FDMUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFDM0IsYUFBYSxFQUNiLGlCQUFpQixDQUNwQixDQUFDO1FBRUYsT0FBTyw0QkFBNEIsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssbUNBQW1DLENBQUMsYUFBa0IsRUFBRSxZQUFtQjtRQUMvRSxJQUFJLG9CQUE0QixDQUFDO1FBRWpDLElBQUksV0FBVyxHQUErQixhQUFhLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLENBQUM7UUFDdEYsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNkLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLENB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