UNPKG

renovate

Version:

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

73 lines 2.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.GitDatasource = void 0; const tslib_1 = require("tslib"); const is_1 = tslib_1.__importDefault(require("@sindresorhus/is")); const simple_git_1 = require("simple-git"); const logger_1 = require("../../../logger"); const decorator_1 = require("../../../util/cache/package/decorator"); const utils_1 = require("../../../util/exec/utils"); const auth_1 = require("../../../util/git/auth"); const config_1 = require("../../../util/git/config"); const url_1 = require("../../../util/git/url"); const regex_1 = require("../../../util/regex"); const datasource_1 = require("../datasource"); const refMatch = (0, regex_1.regEx)(/(?<hash>.*?)\s+refs\/(?<type>.*?)\/(?<value>.*)/); const headMatch = (0, regex_1.regEx)(/(?<hash>.*?)\s+HEAD/); const gitId = 'git'; // TODO: extract to a separate directory structure (#10532) class GitDatasource extends datasource_1.Datasource { static id = gitId; constructor(id) { super(id); } async getRawRefs({ packageName, }) { const gitSubmoduleAuthEnvironmentVariables = (0, auth_1.getGitEnvironmentVariables)([ this.id, ]); const gitEnv = (0, utils_1.getChildEnv)({ env: gitSubmoduleAuthEnvironmentVariables }); const git = (0, simple_git_1.simpleGit)((0, config_1.simpleGitConfig)()).env(gitEnv); // fetch remote tags const lsRemote = await git.listRemote([ (0, url_1.getRemoteUrlWithToken)(packageName, this.id), ]); if (!lsRemote) { return null; } const refs = lsRemote .trim() .split(regex_1.newlineRegex) .map((line) => line.trim()) .map((line) => { let match = refMatch.exec(line); if (match?.groups) { return { type: match.groups.type, value: match.groups.value, hash: match.groups.hash, }; } match = headMatch.exec(line); if (match?.groups) { return { type: '', value: 'HEAD', hash: match.groups.hash, }; } logger_1.logger.trace(`malformed ref: ${line}`); return null; }) .filter(is_1.default.truthy) .filter((ref) => ref.type !== 'pull' && !ref.value.endsWith('^{}')); return refs; } } exports.GitDatasource = GitDatasource; tslib_1.__decorate([ (0, decorator_1.cache)({ namespace: `datasource-${gitId}`, key: ({ packageName }) => packageName, }) ], GitDatasource.prototype, "getRawRefs", null); //# sourceMappingURL=base.js.map