mirror of
https://github.com/webinstall/webi-installers.git
synced 2026-02-20 04:29:54 +00:00
65 lines
1.7 KiB
JavaScript
65 lines
1.7 KiB
JavaScript
'use strict';
|
|
|
|
var map = {};
|
|
|
|
module.exports = function (request) {
|
|
var all = {
|
|
download: '',
|
|
releases: [],
|
|
};
|
|
return Promise.all(
|
|
['macos', 'linux', 'windows'].map(function (osname) {
|
|
return request({
|
|
url:
|
|
'https://storage.googleapis.com/flutter_infra/releases/releases_' +
|
|
osname +
|
|
'.json',
|
|
json: true,
|
|
}).then(function (resp) {
|
|
var body = resp.body;
|
|
all.download = body.base_url + '/{{ download }}';
|
|
body.releases.forEach(function (asset) {
|
|
if (!map[asset.channel]) {
|
|
map[asset.channel] = true;
|
|
}
|
|
all.releases.push({
|
|
// nix leading 'v'
|
|
version: asset.version.replace(/v/, ''),
|
|
lts: false,
|
|
channel: asset.channel,
|
|
date: asset.release_date.replace(/T.*/, ''),
|
|
os: osname,
|
|
arch: 'amd64',
|
|
hash: '-', // not sure about including hash / sha256 yet
|
|
download: asset.archive,
|
|
});
|
|
});
|
|
});
|
|
}),
|
|
).then(function () {
|
|
all.releases.sort(function (a, b) {
|
|
if ('stable' === a.channel && a.channel !== b.channel) {
|
|
return -1;
|
|
}
|
|
if ('stable' === b.channel && a.channel !== b.channel) {
|
|
return 1;
|
|
}
|
|
if ('beta' === a.channel && a.channel !== b.channel) {
|
|
return -1;
|
|
}
|
|
if ('beta' === b.channel && a.channel !== b.channel) {
|
|
return 1;
|
|
}
|
|
return new Date(b.date).valueOf() - new Date(a.date).valueOf();
|
|
});
|
|
return all;
|
|
});
|
|
};
|
|
|
|
if (module === require.main) {
|
|
module.exports(require('@root/request')).then(function (all) {
|
|
all.releases = all.releases.slice(25);
|
|
console.info(JSON.stringify(all, null, 2));
|
|
});
|
|
}
|