mirror of
https://github.com/webinstall/webi-installers.git
synced 2026-08-19 12:06:25 +00:00
fix: allow installers without releases
This commit is contained in:
+3
-1
@@ -13,7 +13,9 @@ Releases.get = async function (pkgdir) {
|
||||
try {
|
||||
get = require(path.join(pkgdir, 'releases.js'));
|
||||
} catch (e) {
|
||||
throw new Error('no releases.js for', pkgdir.split(/[\/\\]+/).pop());
|
||||
let err = new Error('no releases.js for', pkgdir.split(/[\/\\]+/).pop());
|
||||
err.code = 'E_NO_RELEASE';
|
||||
throw err;
|
||||
}
|
||||
|
||||
let all = await get(request);
|
||||
|
||||
@@ -11,14 +11,9 @@ var getReleases = require('./transform-releases.js');
|
||||
|
||||
var installersDir = path.join(__dirname, '..');
|
||||
|
||||
module.exports = async function serveInstaller(
|
||||
baseurl,
|
||||
ua,
|
||||
pkg,
|
||||
tag,
|
||||
ext,
|
||||
formats,
|
||||
) {
|
||||
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/, '');
|
||||
@@ -89,4 +84,4 @@ module.exports = async function serveInstaller(
|
||||
return Releases.renderPowerShell(pkgdir, rel, opts);
|
||||
}
|
||||
return Releases.renderBash(pkgdir, rel, opts);
|
||||
};
|
||||
}
|
||||
|
||||
+21
-10
@@ -88,16 +88,27 @@ async function getCachedReleases(pkg) {
|
||||
// workaround for request timeout seeming to not work
|
||||
let complete = false;
|
||||
await Promise.race([
|
||||
Releases.get(pkgdir).then(function (all) {
|
||||
// Note: it is possible for slightly older data
|
||||
// to replace slightly newer data, but this is better
|
||||
// than being in a cycle where release updates _always_
|
||||
// take longer than expected.
|
||||
//console.debug('DOWNLOADED NEW "%s" releases', pkg);
|
||||
cache[pkg].updatedAt = Date.now();
|
||||
cache[pkg].all = all;
|
||||
complete = true;
|
||||
}),
|
||||
Releases.get(pkgdir)
|
||||
.then(function (all) {
|
||||
// Note: it is possible for slightly older data
|
||||
// to replace slightly newer data, but this is better
|
||||
// than being in a cycle where release updates _always_
|
||||
// take longer than expected.
|
||||
//console.debug('DOWNLOADED NEW "%s" releases', pkg);
|
||||
cache[pkg].updatedAt = Date.now();
|
||||
cache[pkg].all = all;
|
||||
complete = true;
|
||||
})
|
||||
.catch(function (err) {
|
||||
if ('E_NO_RELEASE' === err.code) {
|
||||
cache[pkg].updatedAt = Date.now();
|
||||
cache[pkg].all = { download: '', releases: [] };
|
||||
complete = true;
|
||||
return;
|
||||
}
|
||||
|
||||
throw err;
|
||||
}),
|
||||
sleep(5000).then(function () {
|
||||
if (complete) {
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user