UNPKG

@flxbl-io/sfp

Version:

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

112 lines 9.66 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 ProjectConfig_1 = __importDefault(require("../../core/project/ProjectConfig")); const ajv_1 = __importDefault(require("ajv")); const lodash = require("lodash"); const yaml = require('js-yaml'); const path = require('path'); class ReleaseConfigLoader { get releaseConfig() { // Return clone of releaseDefinition for immutability return lodash.cloneDeep(this._releaseConfig); } constructor(logger, pathToReleaseDefinition, isExplicitDependencyCheckEnabled = false) { this.logger = logger; this.isExplicitDependencyCheckEnabled = isExplicitDependencyCheckEnabled; this._releaseConfig = yaml.load(fs.readFileSync(pathToReleaseDefinition, 'utf8')); this.validateReleaseDefinitionGeneratorConfig(this._releaseConfig); // Easy to handle here than with schema if (this._releaseConfig.includeOnlyArtifacts && this.releaseConfig.excludeArtifacts) { throw new Error('Error: Invalid schema: either use includeArtifacts or excludeArtifacts'); } // Easy to handle here than with schema if (this._releaseConfig.includeOnlyPackageDependencies && this.releaseConfig.excludePackageDependencies) { throw new Error('Error: Invalid schema: either use includePackageDependencies or excludePackageDependencies'); } // Workaround for jsonschema not supporting validation based on dependency value if (this._releaseConfig.releasedefinitionProperties?.baselineOrg && !this._releaseConfig.releasedefinitionProperties?.skipIfAlreadyInstalled) throw new Error("Release option 'skipIfAlreadyInstalled' must be true for 'baselineOrg'"); } getPackagesAsPerReleaseConfig(directory) { let packages = []; let projectConfig = ProjectConfig_1.default.getSFDXProjectConfig(directory); //Read sfdx project json let sfdxPackages = ProjectConfig_1.default.getAllPackagesFromProjectConfig(projectConfig); for (const sfdxPackage of sfdxPackages) { if (this.getArtifactPredicate(sfdxPackage)) { packages.push(sfdxPackage); } } if (packages.length > 0) { for (const sfdxPackage of sfdxPackages) { if (this.getPackageDependencyPredicate(sfdxPackage)) { packages.push(sfdxPackage); } } } return packages; } validateReleaseDefinitionGeneratorConfig(releaseDefinitionGeneratorSchema) { let schema = fs.readJSONSync(path.join(__dirname, '..', '..', '..', 'resources', 'schemas', 'release-config.schema.json'), { encoding: 'UTF-8' }); let validator = new ajv_1.default({ allErrors: true }).compile(schema); let validationResult = validator(releaseDefinitionGeneratorSchema); if (!validationResult) { let errorMsg = `Release definition generation config does not meet schema requirements, ` + `found ${validator.errors.length} validation errors:\n`; validator.errors.forEach((error, errorNum) => { errorMsg += `\n${errorNum + 1}: ${error.instancePath}: ${error.message} ${JSON.stringify(error.params, null, 4)}`; }); throw new Error(errorMsg); } } getArtifactPredicate(artifact) { if (this.releaseConfig.includeOnlyArtifacts) { return this.releaseConfig.includeOnlyArtifacts?.includes(artifact); } else if (this.releaseConfig.excludeArtifacts) { return !this.releaseConfig.excludeArtifacts?.includes(artifact); } else if (this.isExplicitDependencyCheckEnabled && this.releaseConfig.dependencyOn) { return this.releaseConfig.dependencyOn?.includes(artifact); } else return true; } getPackageDependencyPredicate(artifact) { if (this.isExplicitDependencyCheckEnabled && this.releaseConfig.dependencyOn) { return this.releaseConfig.dependencyOn?.includes(artifact); } } } exports.default = ReleaseConfigLoader; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVsZWFzZUNvbmZpZ0xvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbXBsL3JlbGVhc2UvUmVsZWFzZUNvbmZpZ0xvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQStCO0FBQy9CLHFGQUE2RDtBQUM3RCw4Q0FBNkI7QUFFN0IsaUNBQWtDO0FBQ2xDLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUVoQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFN0IsTUFBcUIsbUJBQW1CO0lBR3BDLElBQUksYUFBYTtRQUNiLHFEQUFxRDtRQUNyRCxPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxZQUEyQixNQUFjLEVBQUUsdUJBQStCLEVBQVUsbUNBQXlDLEtBQUs7UUFBdkcsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUEyQyxxQ0FBZ0MsR0FBaEMsZ0NBQWdDLENBQWM7UUFDOUgsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsdUJBQXVCLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNsRixJQUFJLENBQUMsd0NBQXdDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRW5FLHVDQUF1QztRQUN2QyxJQUNJLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CO1lBQ3hDLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLEVBQ3JDLENBQUM7WUFDQyxNQUFNLElBQUksS0FBSyxDQUFDLHdFQUF3RSxDQUFDLENBQUM7UUFDOUYsQ0FBQztRQUNELHVDQUF1QztRQUN2QyxJQUNJLElBQUksQ0FBQyxjQUFjLENBQUMsOEJBQThCO1lBQ2xELElBQUksQ0FBQyxh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