@catladder/pipeline
Version:
Panter workflow for cloud CI/CD and DevOps
27 lines (26 loc) • 1.26 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.sortGitLabJobDefProps = void 0;
/**
* The desired order of GitLab job definition keys.
*/
var jobDefOrder = ["stage", "tags", "image", "services", "variables", "before_script", "script", "after_script", "cache", "coverage", "environment", "release", "artifacts", "rules", "only", "except", "needs", "dependencies", "trigger", "retry", "interruptible", "allow_failure", "parallel", "hooks", "resource_group"];
var sortGitLabJobDefKeys = function (jobDef) {
return Object.keys(jobDef).sort(function (a, b) {
return jobDefOrder.indexOf(a) === -1 && jobDefOrder.indexOf(b) === -1 ? 0 : jobDefOrder.indexOf(a) === -1 ? 1 : jobDefOrder.indexOf(b) === -1 ? -1 : jobDefOrder.indexOf(a) - jobDefOrder.indexOf(b);
});
};
/**
* Sorts the properties of a GitLab job definition based on the desired order.
*
* This is only useful when generating a GitLab pipeline YAML file.
*/
var sortGitLabJobDefProps = function (jobDef) {
return sortGitLabJobDefKeys(jobDef).reduce(function (acc, key) {
var _a;
return jobDef[key] !== undefined ? Object.assign(acc, (_a = {}, _a[key] = jobDef[key], _a)) : acc;
}, {});
};
exports.sortGitLabJobDefProps = sortGitLabJobDefProps;