UNPKG

@catladder/pipeline

Version:

Panter workflow for cloud CI/CD and DevOps

27 lines (26 loc) 1.26 kB
"use strict"; 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;