mirror of
https://github.com/webinstall/webi-installers.git
synced 2026-02-14 17:49:53 +00:00
146 lines
4.3 KiB
JavaScript
146 lines
4.3 KiB
JavaScript
'use strict';
|
|
|
|
var osMap = {
|
|
winnt: 'windows',
|
|
mac: 'darwin',
|
|
};
|
|
var archMap = {
|
|
armv7l: 'armv7',
|
|
i686: 'x86',
|
|
powerpc64le: 'ppc64le',
|
|
};
|
|
|
|
async function getAllReleases() {
|
|
let all = {
|
|
releases: [],
|
|
download: '',
|
|
_names: ['julia', 'macaarch64'],
|
|
};
|
|
|
|
let resp = await fetch(
|
|
'https://julialang-s3.julialang.org/bin/versions.json',
|
|
{
|
|
headers: {
|
|
Accept: 'application/json',
|
|
},
|
|
},
|
|
);
|
|
let buildsByVersion = await resp.json();
|
|
|
|
/*
|
|
{
|
|
"url": "https://julialang-s3.julialang.org/bin/mac/aarch64/1.9/julia-1.9.4-macaarch64.tar.gz",
|
|
"triplet": "aarch64-apple-darwin14",
|
|
"kind": "archive",
|
|
"arch": "aarch64",
|
|
"asc": "-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCAAdFiEENnPfUp2QSUd/drN1ZuPH3APW5JUFAmVTQBcACgkQZuPH3APW\n5JWUqw//QF/CJLAxXZdcXqpBulLUs/AX+x/8aERGcKxZqfeYOwA5efOzma8sASa/\nUzYCLp9E31x/RMDoZah6vPRRjBR+uVI6CLlXCCCmbAJP3lD2vlcY9LKe2/7s3Ba8\nhwITRaL6R5zNr+YfSHW1Hoj2tWgAQh9Y+Te7bP3jzwp5dlFygFO0pzoN+aeJbPNA\nbgT0ry8tgh78/tgNjgt4Ev3E2t3ehhrDGK4tgkkKieO6sdFz8jOacZVZkR1kLVEg\nMBIqmqZfk+5/HMf/6gHwd5GOXW8+GakN7vYXO+9VFETA2EiD5Z5k4Edq/VrNCn4O\npC6WHpBmVBBYX4aQtHkJyQaV8PtFd1j9338jUWlDaa6BVtX2hjRtU1k1oLZB1TTX\nl4awzYgFqdCRnFmOtzTdMDBcfedOiIHdTyxXPjJCX3i0GXmeuk89e5dE4P6sTT9n\n24GeBVQgMaXuNorg9L0oKrsQ8RDT20yEnVbfhy4Cvoq7dNIks6IxLZt10tjJFp1j\n0oJ5f6KucGyqFM9UhXRcuLj8Z+Q+JDzBs5c2pPe/bEzv6nChRNv252e5dve17esg\nK7tHkhXzM+6wl60oyRtpWghOubXyBDsNu1MH3qC9lWy3wmWuMN7no+yX0vGFyhMT\naxjLJSeYdccKD3SuzYotp3XwBKk05PFX9lWy0vuIjVj1sGWcES8=\n=G1tO\n-----END PGP SIGNATURE-----\n",
|
|
"sha256": "67542975e86102eec95bc4bb7c30c5d8c7ea9f9a0b388f0e10f546945363b01a",
|
|
"size": 119559478,
|
|
"version": "1.9.4",
|
|
"os": "mac",
|
|
"extension": "tar.gz"
|
|
}
|
|
*/
|
|
|
|
let versions = Object.keys(buildsByVersion);
|
|
for (let version of versions) {
|
|
let release = buildsByVersion[version];
|
|
|
|
// let odd = isOdd(asset.filename);
|
|
// if (odd) {
|
|
// return;
|
|
// }
|
|
|
|
for (let build of release.files) {
|
|
// // For debugging
|
|
// let paths = build.url.split('/');
|
|
// let extlen = build.extension.length + 1;
|
|
// let name = paths.at(-1);
|
|
// name = name.replace(`-${build.version}`, '');
|
|
// name = name.slice('julia-'.length);
|
|
// name = name.slice(0, -extlen);
|
|
// console.log(`name: ${name}`);
|
|
|
|
// console.log(`triplet: ${build.triplet}`);
|
|
// console.log(`arch: ${build.arch}`);
|
|
// console.log(`os: ${build.os}`);
|
|
// console.log(`kind: ${build.kind}`);
|
|
// console.log(`extension: ${build.extension}`);
|
|
// console.log(`version: ${build.version}`);
|
|
|
|
if (build.kind === 'installer') {
|
|
continue;
|
|
}
|
|
|
|
let arch = archMap[build.arch] || build.arch || '-';
|
|
let os = osMap[build.os] || build.os || '-';
|
|
let libc = '';
|
|
let hardMusl = /\b(musl)\b/.test(build.url);
|
|
if (hardMusl) {
|
|
libc = 'musl';
|
|
} else if (os === 'linux') {
|
|
libc = 'gnu';
|
|
}
|
|
|
|
let webiBuild = {
|
|
version: build.version,
|
|
_version: build.version,
|
|
lts: false,
|
|
channel: '', // autodetect by filename (-beta1, -alpha1, -rc1)
|
|
date: '1970-01-01', // the world may never know
|
|
os: os,
|
|
arch: arch,
|
|
libc: libc,
|
|
_musl: hardMusl,
|
|
ext: '', // let normalize run the split/test/join
|
|
hash: '-', // build.sha256 not ready to standardize this yet
|
|
download: build.url,
|
|
};
|
|
all.releases.push(webiBuild);
|
|
}
|
|
}
|
|
|
|
all.releases.sort(sortByVersion);
|
|
|
|
return all;
|
|
}
|
|
|
|
function sortByVersion(a, b) {
|
|
let [aVer, aPre] = a.version.split('-');
|
|
let [bVer, bPre] = b.version.split('-');
|
|
|
|
let aVers = aVer.split('.');
|
|
let bVers = bVer.split('.');
|
|
for (let i = 0; i < 3; i += 1) {
|
|
aVers[i] = aVers[i].padStart(4, '0');
|
|
bVers[i] = bVers[i].padStart(4, '0');
|
|
}
|
|
|
|
aVer = aVers.join('.');
|
|
if (aPre) {
|
|
aVer += `-${aPre}`;
|
|
}
|
|
bVer = bVers.join('.');
|
|
if (bPre) {
|
|
bVer += `-${aPre}`;
|
|
}
|
|
|
|
if (aVer > bVer) {
|
|
return -1;
|
|
}
|
|
if (aVer < bVer) {
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
module.exports = getAllReleases;
|
|
|
|
if (module === require.main) {
|
|
getAllReleases().then(function (all) {
|
|
all = require('../_webi/normalize.js')(all);
|
|
all.releases = all.releases.slice(0, 10);
|
|
console.info(JSON.stringify(all, null, 2));
|
|
});
|
|
}
|