renovate
Version:
Automated dependency updates. Flexible so you don't need to be.
73 lines • 2.65 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.GitRefsDatasource = void 0;
const tslib_1 = require("tslib");
const logger_1 = require("../../../logger");
const decorator_1 = require("../../../util/cache/package/decorator");
const regex_1 = require("../../../util/regex");
const base_1 = require("./base");
// git will prompt for known hosts or passwords, unless we activate BatchMode
process.env.GIT_SSH_COMMAND = 'ssh -o BatchMode=yes';
class GitRefsDatasource extends base_1.GitDatasource {
static id = 'git-refs';
constructor() {
super(GitRefsDatasource.id);
}
customRegistrySupport = false;
sourceUrlSupport = 'package';
sourceUrlNote = 'The source URL is determined by using the `packageName` and `registryUrl`.';
async getReleases({ packageName, }) {
let rawRefs = null;
try {
rawRefs = await this.getRawRefs({ packageName });
}
catch (err) /* istanbul ignore next */ {
logger_1.logger.debug({ err }, 'Error getting git-refs');
}
if (!rawRefs) {
return null;
}
const refs = rawRefs
.filter((ref) => ref.type === 'tags' || ref.type === 'heads')
.map((ref) => ref.value);
const uniqueRefs = [...new Set(refs)];
const sourceUrl = packageName
.replace((0, regex_1.regEx)(/\.git$/), '')
.replace((0, regex_1.regEx)(/\/$/), '');
const result = {
sourceUrl,
releases: uniqueRefs.map((ref) => ({
version: ref,
gitRef: ref,
newDigest: rawRefs.find((rawRef) => rawRef.value === ref)?.hash,
})),
};
return result;
}
async getDigest({ packageName }, newValue) {
const rawRefs = await this.getRawRefs({ packageName });
/* v8 ignore next 3 -- TODO: add test */
if (!rawRefs) {
return null;
}
let ref;
if (newValue) {
ref = rawRefs.find((rawRef) => ['heads', 'tags'].includes(rawRef.type) && rawRef.value === newValue);
}
else {
ref = rawRefs.find((rawRef) => rawRef.type === '' && rawRef.value === 'HEAD');
}
if (ref) {
return ref.hash;
}
return null;
}
}
exports.GitRefsDatasource = GitRefsDatasource;
tslib_1.__decorate([
(0, decorator_1.cache)({
namespace: `datasource-${GitRefsDatasource.id}`,
key: ({ packageName }) => packageName,
})
], GitRefsDatasource.prototype, "getReleases", null);
//# sourceMappingURL=index.js.map