mirror of
https://github.com/renovatebot/renovate.git
synced 2026-11-10 05:54:52 +00:00
01d2fb3bca
Adds a wrapper to all datasources to provide a generic purl-based interface.
63 lines
1.8 KiB
JavaScript
63 lines
1.8 KiB
JavaScript
const ghGot = require('../platform/github/gh-got-wrapper');
|
|
|
|
module.exports = {
|
|
getDependency,
|
|
};
|
|
|
|
async function getDependency(purl) {
|
|
const { fullname: repo, qualifiers: options } = purl;
|
|
let versions;
|
|
let endpoint;
|
|
let token;
|
|
// istanbul ignore if
|
|
if (process.env.GITHUB_ENDPOINT) {
|
|
logger.debug('Removing GHE token before retrieving node releases');
|
|
endpoint = process.env.GITHUB_ENDPOINT;
|
|
delete process.env.GITHUB_ENDPOINT;
|
|
token = process.env.GITHUB_TOKEN;
|
|
process.env.GITHUB_TOKEN = process.env.GITHUB_COM_TOKEN;
|
|
}
|
|
try {
|
|
if (options.ref === 'release') {
|
|
const url = `repos/${repo}/releases?per_page=100`;
|
|
versions = (await ghGot(url, { paginate: true })).body.map(
|
|
o => o.tag_name
|
|
);
|
|
} else {
|
|
// tag
|
|
const url = `repos/${repo}/git/refs/tags?per_page=100`;
|
|
const tagPrefix = 'refs/tags/';
|
|
versions = (await ghGot(url, { paginate: true })).body
|
|
.filter(o => o.ref && o.ref.startsWith(tagPrefix))
|
|
.map(o => o.ref.replace(tagPrefix, ''));
|
|
}
|
|
} catch (err) {
|
|
logger.info(
|
|
{ repo, err, message: err.message },
|
|
'Error retrieving from github'
|
|
);
|
|
} finally {
|
|
// istanbul ignore if
|
|
if (endpoint) {
|
|
logger.debug('Restoring GHE token and endpoint');
|
|
process.env.GITHUB_TOKEN = token;
|
|
process.env.GITHUB_ENDPOINT = endpoint;
|
|
}
|
|
}
|
|
if (!versions) {
|
|
return null;
|
|
}
|
|
// Filter by semver if no versionScheme provided
|
|
if (options.clean === 'true') {
|
|
versions = versions.map(version => version.replace(/^v(\d)/, '$1'));
|
|
}
|
|
const dependency = {
|
|
repositoryUrl: 'https://github.com/' + repo,
|
|
versions: {},
|
|
};
|
|
versions.forEach(version => {
|
|
dependency.versions[version] = {};
|
|
});
|
|
return dependency;
|
|
}
|