4 * Gets a releases from 'brew'.
7 * @param {string} formula
8 * @returns {PromiseLike<any> | Promise<any>}
10 function getAllReleases(request, formula) {
12 return Promise.reject('missing formula for brew');
15 url: 'https://formulae.brew.sh/api/formula/' + formula + '.json',
16 fail: true, // https://git.coolaj86.com/coolaj86/request.js/issues/2
19 .then(failOnBadStatus)
20 .then(function (resp) {
21 var ver = resp.body.versions.stable;
23 resp.body.bottle.stable.files.high_sierra ||
24 resp.body.bottle.stable.files.catalina
25 ).url.replace(new RegExp(ver.replace(/\./g, '\\.'), 'g'), '{{ v }}');
29 download: dl.replace(/{{ v }}/g, ver)
32 resp.body.versioned_formulae.map(function (f) {
33 var ver = f.replace(/.*@/, '');
41 .catch(function (err) {
42 console.error('Error fetching MariaDB versions (brew)');
48 function failOnBadStatus(resp) {
49 if (resp.statusCode >= 400) {
50 var err = new Error('Non-successful status code: ' + resp.statusCode);
58 module.exports = getAllReleases;
60 if (module === require.main) {
61 getAllReleases(require('@root/request'), 'mariadb').then(function (all) {
62 console.info(JSON.stringify(all, null, 2));