X-Git-Url: https://git.josue.xyz/?a=blobdiff_plain;f=ripgrep%2Freleases.js;h=2ebc97de7381d24934f9eb0bc01deca98cf47db0;hb=91512157ab426c87e0a82b594620e90e324b23a3;hp=09eda590f104f5a12d7274daf0f15b2ba45f74ac;hpb=5ddf4fe79202885aba54bc1fe5133beaf8c79863;p=webi-installers%2F.git diff --git a/ripgrep/releases.js b/ripgrep/releases.js index 09eda59..2ebc97d 100644 --- a/ripgrep/releases.js +++ b/ripgrep/releases.js @@ -1,106 +1,19 @@ 'use strict'; -// this may need customizations between packages -const osMap = { - macos: /\b(mac|darwin|iPhone|iOS|iPad)/i, - linux: /\b(linux)/i, - win: /\b(win|microsoft|msft)/i, - sunos: /\b(sun)/i, - aix: /\b(aix)/i -}; - -const archMap = { - amd64: /(amd64|x64|[_\-]64)/i, - x86: /\b(x86)(?![_\-]64)/i, - ppc64le: /\b(ppc64le)/i, - ppc64: /\b(ppc64)\b/i, - i686: /\b(i686)\b/i, - arm64: /\b(arm64|arm)/i, - armv7l: /\b(armv?7l)/i, - armv6l: /\b(armv?6l)/i, - s390x: /\b(s390x)/i -}; - -const fileExtMap = { - deb: /\.deb$/i, - pkg: /\.pkg$/i, - exe: /\.exe$/i, - msi: /\.msi$/i, - zip: /\.zip$/i, - tar: /\.(tar(\.?(gz)?)|tgz)/i, - '7z': /\.7;$/i -}; - -/** - * Gets the releases for 'ripgrep'. This function could be trimmed down and made - * for use with any github release. - * - * @param request - * @param {string} owner - * @param {string} repo - * @returns {PromiseLike | Promise} - */ -function getAllReleases(request, owner = 'BurntSushi', repo = 'ripgrep') { - if (!owner) { - return Promise.reject('missing owner for repo'); - } - if (!repo) { - return Promise.reject('missing repo name'); - } - return request({ - url: `https://api.github.com/repos/${owner}/${repo}/releases`, - json: true - }).then((resp) => { - const gHubResp = resp.body; - const all = { - releases: [], - download: '' - }; - - gHubResp.forEach((release) => { - release['assets'].forEach((asset) => { - // set the primary download to the first of the releases - if (all.download === '') { - all.download = asset['browser_download_url']; - } - - const name = asset['name']; - const os = Object.keys(osMap).find(regKey => { - name.match(osMap[regKey]); - }) || 'linux'; - const arch = Object.keys(archMap) - .find(regKey => name.match(archMap[regKey])); - - let fileExt = ''; - Object.keys(fileExtMap).find(regKey => { - const match = name.match(fileExtMap[regKey]); - if (match) { - fileExt = match[0]; - return true; - } - return false; - }); - - all.releases.push({ - download: asset['browser_download_url'], - date: release['published_at'], - version: release['tag_name'], - lts: !release['prerelease'], - ext: fileExt, - arch, - os - }); - }); - }); +var github = require('../_common/github.js'); +var owner = 'BurntSushi'; +var repo = 'ripgrep'; +module.exports = function (request) { + return github(request, owner, repo).then(function (all) { return all; }); -} - -module.exports = getAllReleases; +}; if (module === require.main) { - getAllReleases(require('@root/request'), 'BurntSushi', 'ripgrep').then(function(all) { - console.log(JSON.stringify(all, null, 2)); + module.exports(require('@root/request')).then(function (all) { + all = require('../_webi/normalize.js')(all); + console.info(JSON.stringify(all)); + //console.info(JSON.stringify(all, null, 2)); }); }