renovate
Version:
Automated dependency updates. Flexible so you don't need to be.
67 lines • 2.37 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.extractPackageFile = extractPackageFile;
const tslib_1 = require("tslib");
const logger_1 = require("../../../logger");
const array_1 = require("../../../util/array");
const yaml_1 = require("../../../util/yaml");
const orb_1 = require("../../datasource/orb");
const npmVersioning = tslib_1.__importStar(require("../../versioning/npm"));
const extract_1 = require("../dockerfile/extract");
const schema_1 = require("./schema");
function extractDefinition(definition, config) {
const deps = [];
for (const [key, orb] of Object.entries(definition.orbs ?? {})) {
if (typeof orb === 'string') {
const [packageName, currentValue] = orb.split('@');
deps.push({
depName: key,
packageName,
depType: 'orb',
currentValue,
versioning: npmVersioning.id,
datasource: orb_1.OrbDatasource.id,
});
}
else {
deps.push(...extractDefinition(orb, config));
}
}
// extract environments
const environments = [
Object.values(definition.executors ?? {}),
Object.values(definition.jobs ?? {}),
].flat();
for (const job of environments) {
for (const dockerElement of (0, array_1.coerceArray)(job.docker)) {
deps.push({
...(0, extract_1.getDep)(dockerElement.image, true, config?.registryAliases),
depType: 'docker',
});
}
}
return deps;
}
function extractPackageFile(content, packageFile, config) {
const deps = [];
try {
const parsed = (0, yaml_1.parseSingleYaml)(content, {
customSchema: schema_1.CircleCiFile,
});
deps.push(...extractDefinition(parsed, config));
for (const alias of (0, array_1.coerceArray)(parsed.aliases)) {
deps.push({
...(0, extract_1.getDep)(alias.image, true, config?.registryAliases),
depType: 'docker',
});
}
}
catch (err) /* istanbul ignore next */ {
logger_1.logger.debug({ err, packageFile }, 'Error extracting circleci images');
}
if (!deps.length) {
return null;
}
return { deps };
}
//# sourceMappingURL=extract.js.map