feature(delta): use WEBI_UA for curl.exe
[webi-installers/.git] / _webi / releases.js
index c7b0b519a9008f4060ab0eb36097229460a5d6a2..6740fafd9239961f7ffcdf4dd59dc8b3b14a2d3e 100644 (file)
@@ -5,6 +5,8 @@ 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;
@@ -18,6 +20,10 @@ Releases.get = async function (pkgdir) {
   });
 };
 
+function padScript(txt) {
+  return txt.replace(/^/g, '        ');
+}
+
 Releases.renderBash = function (
   pkgdir,
   rel,
@@ -32,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() || '',
@@ -48,13 +55,19 @@ Releases.renderBash = function (
         .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/' +
@@ -71,7 +84,7 @@ Releases.renderBash = function (
                   "'"
               )
               .replace(
-                /^#?WEBI_CSV=.*/m,
+                /^\s*#?WEBI_CSV=.*/m,
                 "WEBI_CSV='" +
                   [
                     rel.version,
@@ -91,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,
+                /^\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)
           );
         });
     });
@@ -150,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) {
@@ -168,7 +184,7 @@ Releases.renderBatch = function (
               /^(REM )?WEBI_PKG=.*/im,
               "WEBI_PKG='" + pkg + '@' + ver + "'"
             )
-            .replace(/{{ installer }}/, installTxt);
+            .replace(reInstallTpl, '\n' + installTxt);
         });
     });
 };
@@ -187,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) {
@@ -226,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);
         });
     });
 };