@catladder/pipeline
Version:
Panter workflow for cloud CI/CD and DevOps
115 lines (114 loc) • 4.59 kB
JavaScript
;
var __assign = this && this.__assign || function () {
__assign = Object.assign || function (t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __rest = this && this.__rest || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
}
return t;
};
var __read = this && this.__read || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o),
r,
ar = [],
e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
} catch (error) {
e = {
error: error
};
} finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
} finally {
if (e) throw e.error;
}
}
return ar;
};
var __spreadArray = this && this.__spreadArray || function (to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
var __importDefault = this && this.__importDefault || function (mod) {
return mod && mod.__esModule ? mod : {
"default": mod
};
};
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.createJobCacheFromConfig = exports.createJobCacheFromCacheConfigs = void 0;
var path_1 = require("path");
var getAllCacheConfigsFromConfig_1 = require("./getAllCacheConfigsFromConfig");
var slugify_1 = __importDefault(require("slugify"));
var createJobCacheFromCacheConfigs = function (context, caches) {
if (caches.length === 0) return undefined;
var simpleCacheDefs = caches.filter(function (c) {
return !("key" in c);
});
var advancedCacheDefs = caches.filter(function (c) {
return "key" in c;
});
// simple caches are merged together into one. This is because e.g. gitlab has a limit of 4 caches, see https://gitlab.com/gitlab-org/gitlab/-/issues/421962
var simpleCaches = simpleCacheDefs.length > 0 ? [{
key: context.name + "-default",
policy: "pull-push",
paths: simpleCacheDefs.flatMap(function (c) {
return c.paths.map(function (p) {
var _a;
var baseDir = c.pathMode === "absolute" ? "" : (_a = c.baseDir) !== null && _a !== void 0 ? _a : context.build.dir;
return (0, path_1.join)(baseDir, p);
});
})
}] : [];
var advancedCaches = advancedCacheDefs.map(function (_a) {
var _b;
var key = _a.key,
paths = _a.paths,
policy = _a.policy,
scope = _a.scope,
pathMode = _a.pathMode,
buildDir = _a.buildDir,
rest = __rest(_a, ["key", "paths", "policy", "scope", "pathMode", "buildDir"]);
var baseDir = pathMode === "absolute" ? "" : buildDir !== null && buildDir !== void 0 ? buildDir : context.build.dir;
var transformedKey = scope === "global" ? key : typeof key === "string" ? (scope === "buildDir" // really edge case...
? (0, slugify_1.default)(baseDir) : context.name) + "-" + key : __assign(__assign({}, key), {
files: (_b = key.files) === null || _b === void 0 ? void 0 : _b.map(function (f) {
return pathMode === "absolute" ? f : (0, path_1.join)(baseDir, f);
})
});
return __assign({
key: transformedKey,
policy: policy !== null && policy !== void 0 ? policy : "pull-push",
paths: pathMode === "absolute" ? paths : paths === null || paths === void 0 ? void 0 : paths.map(function (p) {
return (0, path_1.join)(baseDir, p);
})
}, rest);
});
return __spreadArray(__spreadArray([], __read(advancedCaches), false), __read(simpleCaches), false);
};
exports.createJobCacheFromCacheConfigs = createJobCacheFromCacheConfigs;
/** shortcut, used in some build types */
var createJobCacheFromConfig = function (context, configWithCache) {
return (0, exports.createJobCacheFromCacheConfigs)(context, (0, getAllCacheConfigsFromConfig_1.getAllCacheConfigsFromConfig)(context, configWithCache));
};
exports.createJobCacheFromConfig = createJobCacheFromConfig;