4 * Gets the releases for 'ripgrep'. This function could be trimmed down and made
5 * for use with any github release.
8 * @param {string} owner
10 * @returns {PromiseLike<any> | Promise<any>}
12 function getAllReleases(request, owner, repo, baseurl = 'https://api.github.com') {
14 return Promise.reject('missing owner for repo');
17 return Promise.reject('missing repo name');
20 url: `${baseurl}/repos/${owner}/${repo}/releases`,
23 const gHubResp = resp.body;
26 // todo make this ':baseurl' + ':releasename'
30 gHubResp.forEach((release) => {
31 release['assets'].forEach((asset) => {
32 const name = asset['name'];
35 version: release['tag_name'], // TODO tags aren't always semver / sensical
36 lts: /\b(lts)\b/.test(release['tag_name']),
37 channel: !release['prerelease'] ? 'stable' : 'beta',
38 date: (release['published_at'] || '').replace(/T.*/, ''),
39 os: '', // will be guessed by download filename
40 arch: '', // will be guessed by download filename
41 ext: '', // will be normalized
42 download: asset['browser_download_url']
51 module.exports = getAllReleases;
53 if (module === require.main) {
54 getAllReleases(require('@root/request'), 'BurntSushi', 'ripgrep').then(
56 console.log(JSON.stringify(all, null, 2));