renovate
Version:
Automated dependency updates. Flexible so you don't need to be.
106 lines • 3.51 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.extractRoles = extractRoles;
const regex_1 = require("../../../util/regex");
const galaxy_1 = require("../../datasource/galaxy");
const git_tags_1 = require("../../datasource/git-tags");
const util_1 = require("./util");
function interpretLine(lineMatch, lineNumber, dependency) {
const localDependency = dependency;
const key = lineMatch[2];
const value = lineMatch[3].replace((0, regex_1.regEx)(/["']/g), '');
switch (key) {
case 'name': {
localDependency.managerData.name = value;
break;
}
case 'version': {
localDependency.managerData.version = value;
localDependency.currentValue = value;
localDependency.managerData.lineNumber = lineNumber;
break;
}
case 'scm': {
localDependency.managerData.scm = value;
break;
}
case 'src': {
localDependency.managerData.src = value;
break;
}
default: {
return null;
}
}
return localDependency;
}
function finalize(dependency) {
const dep = dependency;
if (dependency.managerData.version === null) {
dep.skipReason = 'unspecified-version';
return false;
}
const source = dep.managerData.src ?? '';
const sourceMatch = util_1.nameMatchRegex.exec(source);
if (sourceMatch?.groups) {
dep.datasource = git_tags_1.GitTagsDatasource.id;
dep.depName = sourceMatch.groups.depName.replace((0, regex_1.regEx)(/.git$/), '');
// remove leading `git+` from URLs like `git+https://...`
dep.packageName = source.replace((0, regex_1.regEx)(/git\+/), '');
}
else if (util_1.galaxyDepRegex.exec(source)) {
dep.datasource = galaxy_1.GalaxyDatasource.id;
dep.depName = source;
dep.packageName = source;
}
else if (util_1.galaxyDepRegex.exec(dep.managerData.name ?? '')) {
dep.datasource = galaxy_1.GalaxyDatasource.id;
dep.depName = dep.managerData.name;
dep.packageName = dep.managerData.name;
}
else {
dep.skipReason = 'no-source-match';
return false;
}
if (dep.managerData.name !== null) {
dep.depName = dep.managerData.name;
}
return true;
}
function extractRoles(lines) {
const deps = [];
for (let lineNumber = 0; lineNumber < lines.length; lineNumber += 1) {
let lineMatch = util_1.newBlockRegEx.exec(lines[lineNumber]);
if (lineMatch) {
const dep = {
depType: 'role',
managerData: {
name: null,
version: null,
scm: null,
src: null,
},
};
do {
const localdep = interpretLine(lineMatch, lineNumber, dep);
if (!localdep) {
break;
}
const line = lines[lineNumber + 1];
if (!line) {
break;
}
lineMatch = util_1.blockLineRegEx.exec(line);
if (lineMatch) {
lineNumber += 1;
}
} while (lineMatch);
if (finalize(dep)) {
delete dep.managerData;
deps.push(dep);
}
}
}
return deps;
}
//# sourceMappingURL=roles.js.map