begin support for batch templating
authorAJ ONeal <coolaj86@gmail.com>
Tue, 16 Jun 2020 19:11:51 +0000 (13:11 -0600)
committerAJ ONeal <coolaj86@gmail.com>
Tue, 16 Jun 2020 19:11:51 +0000 (13:11 -0600)
.gitignore
_webi/releases.js
_webi/template.bat [new file with mode: 0644]
_webi/test.js

index e3a0b44ad899e2f83d3f7861487a2ef67d6b5989..f199fa309a79ddcaa46d17c2641d7da1fdfdb888 100644 (file)
@@ -1 +1,2 @@
 install-*.sh
+install-*.bat
index 92c6a8c7de1cab4c209e874b3686133adb907acc..ee0815d5a7d0e04466d6198c2a3fb5b170d39653 100644 (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);
+        });
+    });
+};
diff --git a/_webi/template.bat b/_webi/template.bat
new file mode 100644 (file)
index 0000000..8b9d43b
--- /dev/null
@@ -0,0 +1,5 @@
+REM REM debug
+
+REM WEBI_PKG=
+
+{{ installer }}
index e40495e5abb19d1889841d7964846f14dc2e883c..59c1e19907adedfb527aecdc83d943499d5ebd95 100755 (executable)
@@ -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('');
   });
 });