shellcheck: bugfix releases
[webi-installers/.git] / _webi / releases.js
index dc30ce1600fb0cf8afd6ce38d5f32b587a832e97..c7b0b519a9008f4060ab0eb36097229460a5d6a2 100644 (file)
@@ -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);
   });
@@ -37,6 +42,7 @@ Releases.renderBash = function (
           .replace(/[^+\-]*/, '')
           .replace(/^-/, '')
       };
+      var pkgFile = rel.filename || rel.name;
       return fs.promises
         .readFile(path.join(__dirname, 'template.sh'), 'utf8')
         .then(function (tplTxt) {
@@ -108,7 +114,7 @@ Releases.renderBash = function (
               )
               .replace(
                 /^#?WEBI_PKG_FILE=.*/m,
-                "WEBI_PKG_FILE='" + rel.name + "'"
+                "WEBI_PKG_FILE='" + pkgFile + "'"
               )
               // PKG details
               .replace(/^#?PKG_NAME=.*/m, "PKG_NAME='" + pkg + "'")
@@ -166,3 +172,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);
+        });
+    });
+};