renovate
Version:
Automated dependency updates. Flexible so you don't need to be.
63 lines • 3.28 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.extractPackageFile = extractPackageFile;
const logger_1 = require("../../../logger");
const regex_1 = require("../../../util/regex");
const extract_1 = require("../dockerfile/extract");
function extractPackageFile(content, packageFile, config) {
const deps = [];
try {
const lines = content.split(regex_1.newlineRegex);
for (let lineNumber = 0; lineNumber < lines.length; lineNumber += 1) {
const line = lines[lineNumber];
const firstLineMatch = (0, regex_1.regEx)(/^(?<leading>\s* image:\s*)(?<replaceString>['"](?<currentFrom>[^\s'"]+)\\)$/).exec(line);
if (firstLineMatch?.groups) {
let currentFrom = firstLineMatch.groups.currentFrom;
let replaceString = firstLineMatch.groups.replaceString;
for (let i = lineNumber + 1; i < lines.length; i += 1) {
const internalLine = lines[i];
const middleLineMatch = (0, regex_1.regEx)(/^(?<replaceString>\s*(?<currentFrom>[^\s'"]+)\\)$/).exec(internalLine);
if (middleLineMatch?.groups) {
currentFrom += middleLineMatch.groups.currentFrom;
replaceString += '\n' + middleLineMatch.groups.replaceString;
}
else {
const finalLineMatch = (0, regex_1.regEx)(/^(?<replaceString>\s*(?<currentFrom>[^\s'"]+)['"])$/).exec(internalLine);
if (finalLineMatch?.groups) {
currentFrom += finalLineMatch.groups.currentFrom;
replaceString += '\n' + finalLineMatch.groups.replaceString;
const dep = (0, extract_1.getDep)(currentFrom, true, config.registryAliases);
dep.depType = 'docker';
dep.replaceString = replaceString;
if (dep.autoReplaceStringTemplate) {
const d = '@{{newDigest}}';
const c = firstLineMatch.groups.leading.length + 1;
const nd = `\\\n${' '.repeat(c)}${d}`;
const replaced = dep.autoReplaceStringTemplate.replace(d, nd);
dep.autoReplaceStringTemplate = `"${replaced}"`;
}
deps.push(dep);
}
break;
}
}
}
else {
const match = (0, regex_1.regEx)(/^\s* image:\s*'?"?(?<currentFrom>[^\s'"]+)'?"?\s*$/).exec(line);
if (match?.groups) {
const dep = (0, extract_1.getDep)(match.groups.currentFrom, true, config.registryAliases);
dep.depType = 'docker';
deps.push(dep);
}
}
}
}
catch (err) /* istanbul ignore next */ {
logger_1.logger.debug({ err, packageFile }, 'Error extracting DroneCI images');
}
if (!deps.length) {
return null;
}
return { deps };
}
//# sourceMappingURL=extract.js.map