X-Git-Url: https://git.josue.xyz/?a=blobdiff_plain;f=iterm2%2Freleases.js;fp=iterm2%2Freleases.js;h=40d8381899bad8490ac4874bfe37247a0338317a;hb=5e7029b7d38bfdc7c4626f2557f8909a4b216bb3;hp=0000000000000000000000000000000000000000;hpb=982d43bc534c124537d5dd86cf63102e2e847f47;p=webi-installers%2F.git diff --git a/iterm2/releases.js b/iterm2/releases.js new file mode 100644 index 0000000..40d8381 --- /dev/null +++ b/iterm2/releases.js @@ -0,0 +1,66 @@ +'use strict'; + +function getRawReleases(request) { + return request({ url: 'https://iterm2.com/downloads.html' }).then(function ( + resp + ) { + var links = resp.body + .split(/[<>]+/g) + .map(function (str) { + var m = str.match(/href="(https:\/\/iterm2\.com\/downloads\/.*\.zip)"/); + if (m && /iTerm2-[34]/.test(m[1])) { + return m[1]; + } + }) + .filter(Boolean); + return links; + }); +} + +function transformReleases(links) { + //console.log(JSON.stringify(links, null, 2)); + //console.log(links.length); + + return { + releases: links + .map(function (link) { + // strip 'go' prefix, standardize version + var channel = /\/stable\//.test(link) ? 'stable' : 'beta'; + var parts = link + .replace(/.*\/iTerm2[-_]v?(\d_.*)\.zip/, '$1') + .split('_'); + var version = parts.join('.').replace(/([_-])?beta/, '-beta'); + + return { + version: version, + // all go versions >= 1.0.0 are effectively LTS + lts: 'stable' === channel, + channel: channel, + date: '1970-01-01', // the world may never know + os: 'macos', + arch: 'amd64', + ext: '', // let normalize run the split/test/join + download: link + }; + }) + .filter(Boolean) + }; +} + +function getAllReleases(request) { + return getRawReleases(request) + .then(transformReleases) + .then(function (all) { + return all; + }); +} + +module.exports = getAllReleases; + +if (module === require.main) { + getAllReleases(require('@root/request')).then(function (all) { + all = require('../_webi/normalize.js')(all); + all.releases = all.releases.slice(0, 10000); + console.info(JSON.stringify(all, null, 2)); + }); +}