begin support for batch templating

This commit is contained in:
AJ ONeal
2020-06-16 13:11:51 -06:00
parent 445e562616
commit 9e485b15a7
4 changed files with 71 additions and 13 deletions
+1
View File
@@ -1 +1,2 @@
install-*.sh
install-*.bat
+34
View File
@@ -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);
});
});
};
+5
View File
@@ -0,0 +1,5 @@
REM REM debug
REM WEBI_PKG=
{{ installer }}
+31 -13
View File
@@ -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('');
});
});