mirror of
https://github.com/webinstall/webi-installers.git
synced 2026-08-23 22:16:48 +00:00
begin support for batch templating
This commit is contained in:
@@ -1 +1,2 @@
|
||||
install-*.sh
|
||||
install-*.bat
|
||||
|
||||
@@ -111,3 +111,37 @@ Releases.renderBash = function (
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
Releases.renderBatch = 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.bat'), '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.bat'), 'utf8')
|
||||
.then(function (tplTxt) {
|
||||
return tplTxt
|
||||
.replace(/^(REM )?WEBI_PKG=.*/im, "WEBI_PKG='" + pkg + '@' + ver + "'")
|
||||
.replace(/{{ installer }}/, installTxt);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
REM REM debug
|
||||
|
||||
REM WEBI_PKG=
|
||||
|
||||
{{ installer }}
|
||||
+31
-13
@@ -93,25 +93,43 @@ Releases.get(path.join(process.cwd(), pkgdir)).then(function (all) {
|
||||
console.info(rel);
|
||||
console.info('');
|
||||
|
||||
return Releases.renderBash(pkgdir, rel, {
|
||||
baseurl: 'https://webinstall.dev',
|
||||
pkg: pkgname,
|
||||
tag: pkgtag || '',
|
||||
ver: '',
|
||||
os: osrel,
|
||||
arch,
|
||||
formats: formats
|
||||
}).then(function (bashTxt) {
|
||||
return Promise.all([
|
||||
Releases.renderBash(pkgdir, rel, {
|
||||
baseurl: 'https://webinstall.dev',
|
||||
pkg: pkgname,
|
||||
tag: pkgtag || '',
|
||||
ver: '',
|
||||
os: osrel,
|
||||
arch,
|
||||
formats: formats
|
||||
}).catch(function () {}),
|
||||
Releases.renderBatch(pkgdir, rel, {
|
||||
baseurl: 'https://webinstall.dev',
|
||||
pkg: pkgname,
|
||||
tag: pkgtag || '',
|
||||
ver: '',
|
||||
os: osrel,
|
||||
arch,
|
||||
formats: formats
|
||||
}).catch(function () {})
|
||||
]).then(function (scripts) {
|
||||
var bashTxt = scripts[0];
|
||||
var batTxt = scripts[1];
|
||||
var bashFile = 'install-' + pkgname + '.sh';
|
||||
var batFile = 'install-' + pkgname + '.bat';
|
||||
|
||||
if (debug) {
|
||||
bashTxt = bashTxt.replace(/#set -x/g, 'set -x');
|
||||
bashTxt = (bashTxt || 'echo ERROR').replace(/#set -x/g, 'set -x');
|
||||
batTxt = (batTxt || 'echo ERROR').replace(
|
||||
/REM REM todo debug/g,
|
||||
'REM todo debug'
|
||||
);
|
||||
}
|
||||
fs.writeFileSync(bashFile, bashTxt, 'utf-8');
|
||||
console.info('Has the necessary files?');
|
||||
console.info('\tNEEDS MANUAL TEST: %s', bashFile);
|
||||
console.info('\t(todo: ' + batFile + ')');
|
||||
fs.writeFileSync(bashFile, bashTxt, 'utf-8');
|
||||
console.info('\tNEEDS MANUAL TEST: bash %s', bashFile);
|
||||
fs.writeFileSync(batFile, batTxt, 'utf-8');
|
||||
console.info('\tNEEDS MANUAL TEST: cmd.exe %s', batFile);
|
||||
console.info('');
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user