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(
16 baseurl = 'https://api.github.com'
19 return Promise.reject('missing owner for repo');
22 return Promise.reject('missing repo name');
25 url: `${baseurl}/repos/${owner}/${repo}/releases`,
28 const gHubResp = resp.body;
31 // todo make this ':baseurl' + ':releasename'
35 gHubResp.forEach((release) => {
36 release['assets'].forEach((asset) => {
37 const name = asset['name'];
40 version: release['tag_name'], // TODO tags aren't always semver / sensical
41 lts: /(\b|_)(lts)(\b|_)/.test(release['tag_name']),
42 channel: !release['prerelease'] ? 'stable' : 'beta',
43 date: (release['published_at'] || '').replace(/T.*/, ''),
44 os: '', // will be guessed by download filename
45 arch: '', // will be guessed by download filename
46 ext: '', // will be normalized
47 download: asset['browser_download_url']
56 module.exports = getAllReleases;
58 if (module === require.main) {
59 getAllReleases(require('@root/request'), 'BurntSushi', 'ripgrep').then(
61 console.info(JSON.stringify(all, null, 2));