renovate
Version:
Automated dependency updates. Flexible so you don't need to be.
76 lines • 2.93 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.extractPackageFile = extractPackageFile;
const tslib_1 = require("tslib");
const is_1 = tslib_1.__importDefault(require("@sindresorhus/is"));
const logger_1 = require("../../../logger");
const upgradeable_tooling_1 = require("./upgradeable-tooling");
const utils_1 = require("./utils");
function extractPackageFile(content, packageFile) {
logger_1.logger.trace(`mise.extractPackageFile(${packageFile})`);
const misefile = (0, utils_1.parseTomlFile)(content, packageFile);
if (!misefile) {
return null;
}
const deps = [];
const tools = misefile.tools;
if (tools) {
for (const [name, toolData] of Object.entries(tools)) {
const version = parseVersion(toolData);
const depName = name.trim();
const toolConfig = getToolConfig(depName, version);
const dep = createDependency(depName, version, toolConfig);
deps.push(dep);
}
}
return deps.length ? { deps } : null;
}
function parseVersion(toolData) {
if (is_1.default.nonEmptyString(toolData)) {
// Handle the string case
// e.g. 'erlang = "23.3"'
return toolData;
}
if (is_1.default.array(toolData, is_1.default.string)) {
// Handle the array case
// e.g. 'erlang = ["23.3", "24.0"]'
return toolData.length ? toolData[0] : null; // Get the first version in the array
}
if (is_1.default.object(toolData) && is_1.default.nonEmptyString(toolData.version)) {
// Handle the object case with a string version
// e.g. 'python = { version = "3.11.2" }'
return toolData.version;
}
return null; // Return null if no version is found
}
function getToolConfig(name, version) {
if (version === null) {
return null; // Early return if version is null
}
// Try to get the config from miseTooling first, then asdfTooling
return (getConfigFromTooling(upgradeable_tooling_1.miseTooling, name, version) ??
getConfigFromTooling(upgradeable_tooling_1.asdfTooling, name, version));
}
function getConfigFromTooling(toolingSource, name, version) {
const toolDefinition = toolingSource[name];
if (!toolDefinition) {
return null;
} // Return null if no toolDefinition is found
return ((typeof toolDefinition.config === 'function'
? toolDefinition.config(version)
: toolDefinition.config) ?? null); // Ensure null is returned instead of undefined
}
function createDependency(name, version, config) {
if (version === null) {
return { depName: name, skipReason: 'unspecified-version' };
}
if (config === null) {
return { depName: name, skipReason: 'unsupported-datasource' };
}
return {
depName: name,
currentValue: version,
...config,
};
}
//# sourceMappingURL=extract.js.map