X-Git-Url: https://git.josue.xyz/?a=blobdiff_plain;f=_webi%2Freleases.js;h=6740fafd9239961f7ffcdf4dd59dc8b3b14a2d3e;hb=91512157ab426c87e0a82b594620e90e324b23a3;hp=83eeb14ab41fa9948b821e04273e824d31578ba0;hpb=681cccd4d5f2adb81470ee99ede927a6de896c3b;p=webi-installers%2F.git diff --git a/_webi/releases.js b/_webi/releases.js index 83eeb14..6740faf 100644 --- a/_webi/releases.js +++ b/_webi/releases.js @@ -5,14 +5,25 @@ var path = require('path'); var request = require('@root/request'); var _normalize = require('../_webi/normalize.js'); +var reInstallTpl = /\s*#?\s*{{ installer }}/; + 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); }); }; +function padScript(txt) { + return txt.replace(/^/g, ' '); +} + Releases.renderBash = function ( pkgdir, rel, @@ -27,6 +38,7 @@ Releases.renderBash = function ( return fs.promises .readFile(path.join(pkgdir, 'install.sh'), 'utf8') .then(function (installTxt) { + installTxt = padScript(installTxt); var vers = rel.version.split('.'); var v = { major: vers.shift() || '', @@ -37,18 +49,25 @@ Releases.renderBash = function ( .replace(/[^+\-]*/, '') .replace(/^-/, '') }; + var pkgFile = rel.filename || rel.name; return fs.promises .readFile(path.join(__dirname, 'template.sh'), 'utf8') .then(function (tplTxt) { return ( tplTxt - .replace(/^#?WEBI_PKG=.*/m, "WEBI_PKG='" + pkg + '@' + ver + "'") - .replace(/^#?WEBI_HOST=.*/m, "WEBI_HOST='" + baseurl + "'") - .replace(/^#?WEBI_OS=.*/m, "WEBI_OS='" + (os || '') + "'") - .replace(/^#?WEBI_ARCH=.*/m, "WEBI_ARCH='" + (arch || '') + "'") - .replace(/^#?WEBI_TAG=.*/m, "WEBI_TAG='" + tag + "'") .replace( - /^#?WEBI_RELEASES=.*/m, + /^\s*#?WEBI_PKG=.*/m, + "WEBI_PKG='" + pkg + '@' + ver + "'" + ) + .replace(/^\s*#?WEBI_HOST=.*/m, "WEBI_HOST='" + baseurl + "'") + .replace(/^\s*#?WEBI_OS=.*/m, "WEBI_OS='" + (os || '') + "'") + .replace( + /^\s*#?WEBI_ARCH=.*/m, + "WEBI_ARCH='" + (arch || '') + "'" + ) + .replace(/^\s*#?WEBI_TAG=.*/m, "WEBI_TAG='" + tag + "'") + .replace( + /^\s*#?WEBI_RELEASES=.*/m, "WEBI_RELEASES='" + baseurl + '/api/releases/' + @@ -65,7 +84,7 @@ Releases.renderBash = function ( "'" ) .replace( - /^#?WEBI_CSV=.*/m, + /^\s*#?WEBI_CSV=.*/m, "WEBI_CSV='" + [ rel.version, @@ -85,46 +104,46 @@ Releases.renderBash = function ( "'" ) .replace( - /^#?WEBI_VERSION=.*/m, + /^\s*#?WEBI_VERSION=.*/m, 'WEBI_VERSION=' + JSON.stringify(rel.version) ) - .replace(/^#?WEBI_MAJOR=.*/m, 'WEBI_MAJOR=' + v.major) - .replace(/^#?WEBI_MINOR=.*/m, 'WEBI_MINOR=' + v.minor) - .replace(/^#?WEBI_PATCH=.*/m, 'WEBI_PATCH=' + v.patch) - .replace(/^#?WEBI_BUILD=.*/m, 'WEBI_BUILD=' + v.build) - .replace(/^#?WEBI_LTS=.*/m, 'WEBI_LTS=' + rel.lts) - .replace(/^#?WEBI_CHANNEL=.*/m, 'WEBI_CHANNEL=' + rel.channel) + .replace(/^\s*#?WEBI_MAJOR=.*/m, 'WEBI_MAJOR=' + v.major) + .replace(/^\s*#?WEBI_MINOR=.*/m, 'WEBI_MINOR=' + v.minor) + .replace(/^\s*#?WEBI_PATCH=.*/m, 'WEBI_PATCH=' + v.patch) + .replace(/^\s*#?WEBI_BUILD=.*/m, 'WEBI_BUILD=' + v.build) + .replace(/^\s*#?WEBI_LTS=.*/m, 'WEBI_LTS=' + rel.lts) + .replace(/^\s*#?WEBI_CHANNEL=.*/m, 'WEBI_CHANNEL=' + rel.channel) .replace( - /^#?WEBI_EXT=.*/m, + /^\s*#?WEBI_EXT=.*/m, 'WEBI_EXT=' + rel.ext.replace(/tar.*/, 'tar') ) .replace( - /^#?WEBI_FORMATS=.*/m, + /^\s*#?WEBI_FORMATS=.*/m, "WEBI_FORMATS='" + formats.join(',') + "'" ) .replace( - /^#?WEBI_PKG_URL=.*/m, + /^\s*#?WEBI_PKG_URL=.*/m, "WEBI_PKG_URL='" + rel.download + "'" ) .replace( - /^#?WEBI_PKG_FILE=.*/m, - "WEBI_PKG_FILE='" + rel.name + "'" + /^\s*#?WEBI_PKG_FILE=.*/m, + "WEBI_PKG_FILE='" + pkgFile + "'" ) // PKG details - .replace(/^#?PKG_NAME=.*/m, "PKG_NAME='" + pkg + "'") + .replace(/^\s*#?PKG_NAME=.*/m, "PKG_NAME='" + pkg + "'") .replace( - /^#?PKG_OSES=.*/m, + /^\s*#?PKG_OSES=.*/m, "PKG_OSES='" + ((rel && rel.oses) || []).join(',') + "'" ) .replace( - /^#?PKG_ARCHES=.*/m, + /^\s*#?PKG_ARCHES=.*/m, "PKG_ARCHES='" + ((rel && rel.arches) || []).join(',') + "'" ) .replace( - /^#?PKG_FORMATS=.*/m, + /^\s*#?PKG_FORMATS=.*/m, "PKG_FORMATS='" + ((rel && rel.formats) || []).join(',') + "'" ) - .replace(/{{ installer }}/, installTxt) + .replace(reInstallTpl, '\n' + installTxt) ); }); }); @@ -144,16 +163,19 @@ Releases.renderBatch = function ( return fs.promises .readFile(path.join(pkgdir, 'install.bat'), 'utf8') .then(function (installTxt) { + installTxt = padScript(installTxt); + /* var vers = rel.version.split('.'); var v = { major: vers.shift() || '', minor: vers.shift() || '', - patch: vers.join('.').replace(/[+\-].*/, ''), + patch: vers.join('.').replace(/[+\-].*$/, ''), build: vers .join('.') - .replace(/[^+\-]*/, '') + .replace(/[^+\-]*()/, '') .replace(/^-/, '') }; + */ return fs.promises .readFile(path.join(__dirname, 'template.bat'), 'utf8') .then(function (tplTxt) { @@ -162,7 +184,7 @@ Releases.renderBatch = function ( /^(REM )?WEBI_PKG=.*/im, "WEBI_PKG='" + pkg + '@' + ver + "'" ) - .replace(/{{ installer }}/, installTxt); + .replace(reInstallTpl, '\n' + installTxt); }); }); }; @@ -181,16 +203,19 @@ Releases.renderPowerShell = function ( return fs.promises .readFile(path.join(pkgdir, 'install.ps1'), 'utf8') .then(function (installTxt) { + installTxt = padScript(installTxt); + /* var vers = rel.version.split('.'); var v = { major: vers.shift() || '', minor: vers.shift() || '', - patch: vers.join('.').replace(/[+\-].*/, ''), + patch: vers.join('.').replace(/[+\-].*$/, ''), build: vers .join('.') - .replace(/[^+\-]*/, '') + .replace(/[^+\-]*()/, '') .replace(/^-/, '') }; + */ return fs.promises .readFile(path.join(__dirname, 'template.ps1'), 'utf8') .then(function (tplTxt) { @@ -220,7 +245,7 @@ Releases.renderPowerShell = function ( /^(#)?\$Env:WEBI_PKG_FILE\s*=.*/im, "$Env:WEBI_PKG_FILE = '" + rel.name + "'" ) - .replace(/{{ installer }}/, installTxt); + .replace(reInstallTpl, '\n' + installTxt); }); }); };