UNPKG

renovate

Version:

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

84 lines 3.55 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BazelDatasource = void 0; const tslib_1 = require("tslib"); const is_1 = tslib_1.__importDefault(require("@sindresorhus/is")); const external_host_error_1 = require("../../../types/errors/external-host-error"); const decorator_1 = require("../../../util/cache/package/decorator"); const fs_1 = require("../../../util/fs"); const http_1 = require("../../../util/http"); const url_1 = require("../../../util/url"); const bazel_module_1 = require("../../versioning/bazel-module"); const bzlmod_version_1 = require("../../versioning/bazel-module/bzlmod-version"); const datasource_1 = require("../datasource"); const schema_1 = require("./schema"); class BazelDatasource extends datasource_1.Datasource { static id = 'bazel'; static bazelCentralRepoUrl = 'https://raw.githubusercontent.com/bazelbuild/bazel-central-registry/main'; defaultRegistryUrls = [BazelDatasource.bazelCentralRepoUrl]; registryStrategy = 'hunt'; customRegistrySupport = true; caching = true; defaultVersioning = bazel_module_1.id; static packageMetadataPath(packageName) { return `/modules/${packageName}/metadata.json`; } constructor() { super(BazelDatasource.id); } async getReleases({ registryUrl, packageName, }) { const path = BazelDatasource.packageMetadataPath(packageName); const url = (0, url_1.joinUrlParts)(registryUrl, path); const result = { releases: [] }; try { let metadata; const FILE_PREFIX = 'file://'; if (url.startsWith(FILE_PREFIX)) { const filePath = url.slice(FILE_PREFIX.length); if (!(0, fs_1.isValidLocalPath)(filePath)) { return null; } const fileContent = await (0, fs_1.readLocalFile)(filePath, 'utf8'); if (!fileContent) { return null; } metadata = schema_1.BazelModuleMetadata.parse(JSON.parse(fileContent)); } else { const response = await this.http.getJson(url, schema_1.BazelModuleMetadata); metadata = response.body; } result.releases = metadata.versions .map((v) => new bzlmod_version_1.BzlmodVersion(v)) .sort(bzlmod_version_1.BzlmodVersion.defaultCompare) .map((bv) => { const release = { version: bv.original }; if (is_1.default.truthy(metadata.yanked_versions?.[bv.original])) { release.isDeprecated = true; } return release; }); if (metadata.homepage) { result.homepage = metadata.homepage; } } catch (err) { if (err instanceof http_1.HttpError) { if (err.response?.statusCode === 404) { return null; } throw new external_host_error_1.ExternalHostError(err); } this.handleGenericErrors(err); } return result.releases.length ? result : null; } } exports.BazelDatasource = BazelDatasource; tslib_1.__decorate([ (0, decorator_1.cache)({ namespace: `datasource-${BazelDatasource.id}`, key: ({ registryUrl, packageName }) => `${registryUrl}:${packageName}`, }) ], BazelDatasource.prototype, "getReleases", null); //# sourceMappingURL=index.js.map