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 = 'BurntSushi', repo = 'ripgrep') {
14 return Promise.reject('missing owner for repo');
17 return Promise.reject('missing repo name');
20 url: `https://api.github.com/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'];
34 version: release['tag_name'], // TODO tags aren't always semver / sensical
35 lts: /\b(lts)\b/.test(release['tag_name']),
36 channel: !release['prerelease'] ? 'stable' : 'beta',
37 date: (release['published_at'] || '').replace(/T.*/, ''),
38 os: '', // will be guessed by download filename
39 arch: '', // will be guessed by download filename
40 ext: '', // will be normalized
41 download: asset['browser_download_url']
50 module.exports = getAllReleases;
52 if (module === require.main) {
53 getAllReleases(require('@root/request'), 'BurntSushi', 'ripgrep').then(
55 console.log(JSON.stringify(all, null, 2));