UNPKG

renovate

Version:

Automated dependency updates. Flexible so you don't need to be.

80 lines 3.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PythonVersionDatasource = void 0; const tslib_1 = require("tslib"); const decorator_1 = require("../../../util/cache/package/decorator"); const python_1 = require("../../versioning/python"); const datasource_1 = require("../datasource"); const endoflife_date_1 = require("../endoflife-date"); const common_1 = require("../endoflife-date/common"); const github_releases_1 = require("../github-releases"); const common_2 = require("./common"); const schema_1 = require("./schema"); class PythonVersionDatasource extends datasource_1.Datasource { static id = common_2.datasource; pythonPrebuildDatasource; pythonEolDatasource; constructor() { super(common_2.datasource); this.pythonPrebuildDatasource = new github_releases_1.GithubReleasesDatasource(); this.pythonEolDatasource = new endoflife_date_1.EndoflifeDateDatasource(); } customRegistrySupport = false; defaultRegistryUrls = [common_2.defaultRegistryUrl]; defaultVersioning = python_1.id; caching = true; async getPrebuildReleases() { return await this.pythonPrebuildDatasource.getReleases({ registryUrl: common_2.githubBaseUrl, packageName: 'containerbase/python-prebuild', }); } async getEolReleases() { return await this.pythonEolDatasource.getReleases({ registryUrl: common_1.registryUrl, packageName: 'python', }); } async getReleases({ registryUrl, }) { /* v8 ignore next 3 -- should never happen */ if (!registryUrl) { return null; } const pythonPrebuildReleases = await this.getPrebuildReleases(); const pythonPrebuildVersions = new Set(pythonPrebuildReleases?.releases.map((release) => release.version)); const pythonEolReleases = await this.getEolReleases(); const pythonEolVersions = new Map(pythonEolReleases?.releases .filter((release) => release.isDeprecated !== undefined) .map((release) => [ release.version.split('.').slice(0, 2).join('.'), release.isDeprecated, ])); const result = { homepage: 'https://python.org', sourceUrl: 'https://github.com/python/cpython', registryUrl, releases: [], }; try { const response = await this.http.getJson(registryUrl, schema_1.PythonRelease); result.releases.push(...response.body .filter((release) => release.isStable) .filter((release) => pythonPrebuildVersions.has(release.version))); } catch (err) { this.handleGenericErrors(err); } for (const release of result.releases) { release.isDeprecated = pythonEolVersions.get(release.version.split('.').slice(0, 2).join('.')); } return result.releases.length ? result : null; } } exports.PythonVersionDatasource = PythonVersionDatasource; tslib_1.__decorate([ (0, decorator_1.cache)({ namespace: `datasource-${common_2.datasource}`, key: ({ registryUrl }) => `${registryUrl}`, }) ], PythonVersionDatasource.prototype, "getReleases", null); //# sourceMappingURL=index.js.map