@flxbl-io/sfp
Version:
sfp is a CLI tool to help you manage your Salesforce projects in an artifact centric model
68 lines • 6.72 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const ajv_1 = __importDefault(require("ajv"));
const yaml = require('js-yaml');
const lodash = require("lodash");
const Get18DigitSalesforceId_1 = __importDefault(require("../../utils/Get18DigitSalesforceId"));
const Git_1 = __importDefault(require("../../core/git/Git"));
const fs = require('fs-extra');
const path = require('path');
class ReleaseDefinitionLoader {
get releaseDefinition() {
// Return clone of releaseDefinition for immutability
return lodash.cloneDeep(this._releaseDefinition);
}
constructor(_releaseDefinition) {
this._releaseDefinition = _releaseDefinition;
this.validateReleaseDefinition(this._releaseDefinition);
// Workaround for jsonschema not supporting validation based on dependency value
if (this._releaseDefinition.baselineOrg && !this._releaseDefinition.skipIfAlreadyInstalled)
throw new Error("Release option 'skipIfAlreadyInstalled' must be true for 'baselineOrg'");
if (this._releaseDefinition.packageDependencies) {
this.convertPackageDependenciesIdTo18Digits(this._releaseDefinition.packageDependencies);
}
}
static async loadReleaseDefinition(pathToReleaseDefinition) {
//Check whether path contains gitRef
let releaseDefinition;
try {
if (pathToReleaseDefinition.includes(':')) {
let git = await Git_1.default.initiateRepo();
await git.fetch();
let releaseFile = await git.show([pathToReleaseDefinition]);
releaseDefinition = yaml.load(releaseFile);
}
else {
releaseDefinition = yaml.load(fs.readFileSync(pathToReleaseDefinition, 'UTF8'));
}
}
catch (error) {
throw new Error(`Unable to read the release definition file due to ${JSON.stringify(error)}`);
}
let releaseDefinitionLoader = new ReleaseDefinitionLoader(releaseDefinition);
return releaseDefinitionLoader.releaseDefinition;
}
convertPackageDependenciesIdTo18Digits(packageDependencies) {
for (let pkg in packageDependencies) {
packageDependencies[pkg] = (0, Get18DigitSalesforceId_1.default)(packageDependencies[pkg]);
}
}
validateReleaseDefinition(releaseDefinition) {
let schema = fs.readJSONSync(path.join(__dirname, '..', '..', '..', 'resources', 'schemas', 'release-defn.schema.json'), { encoding: 'UTF-8' });
let validator = new ajv_1.default({ allErrors: true }).compile(schema);
let validationResult = validator(releaseDefinition);
if (!validationResult) {
let errorMsg = `Release definition 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);
}
}
}
exports.default = ReleaseDefinitionLoader;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVsZWFzZURlZmluaXRpb25Mb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW1wbC9yZWxlYXNlL1JlbGVhc2VEZWZpbml0aW9uTG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsOENBQXNCO0FBQ3RCLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNoQyxpQ0FBa0M7QUFDbEMsZ0dBQXdFO0FBQ3hFLDZEQUFxQztBQUVyQyxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDL0IsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRTdCLE1BQXFCLHVCQUF1QjtJQUN4QyxJQUFJLGlCQUFpQjtRQUNqQixxREFBcUQ7UUFDckQsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFDRCxZQUE0QixrQkFBcUM7UUFBckMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUM3RCxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFeEQsZ0ZBQWdGO1FBQ2hGLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxzQkFBc0I7WUFDdEYsTUFBTSxJQUFJLEtBQUssQ0FBQyx3RUFBd0UsQ0FBQyxDQUFDO1FBRTlGLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDOUMsSUFBSSxDQUFDLHNDQUFzQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzdGLENBQUM7SUFDTCxDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyx1QkFBK0I7UUFDckUsb0NBQW9DO1FBQ3BDLElBQUksaUJBQW9DLENBQUM7UUFDekMsSUFBSSxDQUFDO1lBQ0QsSUFBSSx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDeEMsSUFBSSxHQUFHLEdBQUcsTUFBTSxhQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ25DLE1BQU0sR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNsQixJQUFJLFdBQVcsR0FBRyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUM7Z0JBQzVELGlCQUFpQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDL0MsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLGlCQUFpQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyx1QkFBdUIsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ3BGLENBQUM7UUFDTCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMscURBQXFELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xHLENBQUM7UUFFRCxJQUFJLHVCQUF1QixHQUFHLElBQUksdUJBQXVCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM3RSxPQUFPLHVCQUF1QixDQUFDLGlCQUFpQixDQUFDO0lBQ3JELENBQUM7SUFFTyxzQ0FBc0MsQ0FBQyxtQkFBNEM7UUFDdkYsS0FBSyxJQUFJLEdBQUcsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1lBQ2xDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUEsZ0NBQXNCLEVBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNoRixDQUFDO0lBQ0wsQ0FBQztJQUVPLHlCQUF5QixDQUFDLGlCQUFvQztRQUNsRSxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUMsWUFBWSxDQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLDBCQUEwQixDQUFDLEVBQzFGLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUN4QixDQUFDO1FBRUYsSUFBSSxTQUFTLEdBQUcsSUFBSSxhQUFHLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0QsSUFBSSxnQkFBZ0IsR0FBRyxTQUFTLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUVwRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNwQixJQUFJLFFBQVEsR0FDUix3REFBd0Q7Z0JBQ3hELFNBQVMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixDQUFDO1lBRTVELFNBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUFFO2dCQUN6QyxRQUFRLElBQUksS0FBSyxRQUFRLEdBQUcsQ0FBQyxLQUFLLEtBQUssQ0FBQyxZQUFZLEtBQUssS0FBSyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUNwRixLQUFLLENBQUMsTUFBTSxFQUNaLElBQUksRUFDSixDQUFDLENBQ0osRUFBRSxDQUFDO1lBQ1IsQ0FBQyxDQUFDLENBQUM7WUFFSCxNQUFNLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlCLENBQUM7SUFDTCxDQUFDO0NBQ0o7QUFwRUQsMENBb0VDIn0=