mirror of
https://github.com/webinstall/webi-installers.git
synced 2026-03-29 22:46:59 +00:00
90 lines
1.9 KiB
JavaScript
90 lines
1.9 KiB
JavaScript
'use strict';
|
|
|
|
var path = require('path');
|
|
|
|
var uaDetect = require('./ua-detect.js');
|
|
var packages = require('./packages.js');
|
|
var Releases = require('./releases.js');
|
|
|
|
// handlers caching and transformation, probably should be broken down
|
|
var getReleases = require('./transform-releases.js');
|
|
|
|
var installersDir = path.join(__dirname, '..');
|
|
|
|
serveInstaller.serveInstaller = serveInstaller;
|
|
module.exports = serveInstaller;
|
|
async function serveInstaller(baseurl, ua, pkg, tag, ext, formats) {
|
|
// TODO put some of this in a middleware? or common function?
|
|
|
|
var ver = tag.replace(/^v/, '');
|
|
var lts;
|
|
var channel;
|
|
|
|
switch (ver) {
|
|
case 'latest':
|
|
ver = '';
|
|
channel = 'stable';
|
|
break;
|
|
case 'lts':
|
|
lts = true;
|
|
channel = 'stable';
|
|
ver = '';
|
|
break;
|
|
case 'stable':
|
|
channel = 'stable';
|
|
ver = '';
|
|
break;
|
|
case 'beta':
|
|
channel = 'beta';
|
|
ver = '';
|
|
break;
|
|
case 'dev':
|
|
channel = 'dev';
|
|
ver = '';
|
|
break;
|
|
}
|
|
|
|
// TODO maybe move package/version/lts/channel detection into getReleases
|
|
var myOs = uaDetect.os(ua);
|
|
var myArch = uaDetect.arch(ua);
|
|
var myLibc = uaDetect.libc(ua);
|
|
let cfg = await packages.get(pkg);
|
|
let rels = await getReleases({
|
|
pkg: cfg.alias || pkg,
|
|
ver,
|
|
os: myOs,
|
|
arch: myArch,
|
|
libc: myLibc,
|
|
lts,
|
|
channel,
|
|
formats,
|
|
limit: 1,
|
|
});
|
|
|
|
var rel = rels.releases[0];
|
|
var pkgdir = path.join(installersDir, pkg);
|
|
var opts = {
|
|
baseurl,
|
|
pkg: cfg.alias || pkg,
|
|
ver,
|
|
tag,
|
|
os: myOs,
|
|
arch: myArch,
|
|
lts,
|
|
channel,
|
|
formats,
|
|
limit: 1,
|
|
};
|
|
rel.oses = rels.oses;
|
|
rel.arches = rels.arches;
|
|
rel.formats = rels.formats;
|
|
|
|
if ('bat' === ext) {
|
|
return Releases.renderBatch(pkgdir, rel, opts);
|
|
}
|
|
if ('ps1' === ext) {
|
|
return Releases.renderPowerShell(pkgdir, rel, opts);
|
|
}
|
|
return Releases.renderBash(pkgdir, rel, opts);
|
|
}
|