X-Git-Url: https://git.josue.xyz/?a=blobdiff_plain;f=_webi%2Freleases.js;h=f5ef319dae5bb45af268b46b4282121ddf6afd32;hb=912c9c8f06590f06a2a9df1c03d8ead43e96ec70;hp=dc30ce1600fb0cf8afd6ce38d5f32b587a832e97;hpb=f9f280f724f8bad9eb00440c9dbb81d62a78ee01;p=webi-installers%2F.git diff --git a/_webi/releases.js b/_webi/releases.js index dc30ce1..f5ef319 100644 --- a/_webi/releases.js +++ b/_webi/releases.js @@ -7,7 +7,12 @@ var _normalize = require('../_webi/normalize.js'); var Releases = module.exports; Releases.get = async function (pkgdir) { - var get = require(path.join(pkgdir, 'releases.js')); + var get; + try { + get = require(path.join(pkgdir, 'releases.js')); + } catch (e) { + throw new Error('no releases.js for', pkgdir.split(/[\/\\]+/).pop()); + } return get(request).then(function (all) { return _normalize(all); }); @@ -166,3 +171,61 @@ Releases.renderBatch = function ( }); }); }; + +Releases.renderPowerShell = function ( + pkgdir, + rel, + { baseurl, pkg, tag, ver, os, arch, formats } +) { + if (!Array.isArray(formats)) { + formats = []; + } + if (!tag) { + tag = ''; + } + return fs.promises + .readFile(path.join(pkgdir, 'install.ps1'), 'utf8') + .then(function (installTxt) { + var vers = rel.version.split('.'); + var v = { + major: vers.shift() || '', + minor: vers.shift() || '', + patch: vers.join('.').replace(/[+\-].*/, ''), + build: vers + .join('.') + .replace(/[^+\-]*/, '') + .replace(/^-/, '') + }; + return fs.promises + .readFile(path.join(__dirname, 'template.ps1'), 'utf8') + .then(function (tplTxt) { + var pkgver = pkg + '@' + ver; + return tplTxt + .replace( + /^(#)?\$Env:WEBI_HOST\s*=.*/im, + "$Env:WEBI_HOST = '" + baseurl + "'" + ) + .replace( + /^(#)?\$Env:WEBI_PKG\s*=.*/im, + "$Env:WEBI_PKG = '" + pkgver + "'" + ) + .replace( + /^(#)?\$Env:PKG_NAME\s*=.*/im, + "$Env:PKG_NAME = '" + pkg + "'" + ) + .replace( + /^(#)?\$Env:WEBI_VERSION\s*=.*/im, + "$Env:WEBI_VERSION = '" + rel.version + "'" + ) + .replace( + /^(#)?\$Env:WEBI_PKG_URL\s*=.*/im, + "$Env:WEBI_PKG_URL = '" + rel.download + "'" + ) + .replace( + /^(#)?\$Env:WEBI_PKG_FILE\s*=.*/im, + "$Env:WEBI_PKG_FILE = '" + rel.name + "'" + ) + .replace(/{{ installer }}/, installTxt); + }); + }); +};