support bare executables and xbin on windows for jq
authorAJ ONeal <aj@therootcompany.com>
Fri, 3 Jul 2020 06:18:13 +0000 (06:18 +0000)
committerAJ ONeal <aj@therootcompany.com>
Fri, 3 Jul 2020 06:20:00 +0000 (06:20 +0000)
_webi/bootstrap.sh
_webi/normalize.js
_webi/template.sh
_webi/webi.ps1

index 64cf2c31e21306ea39ad5eb6cda60683f3571970..877ad818443500feccc80ab79a49eeebac4cfba7 100644 (file)
@@ -53,6 +53,8 @@ fi
 if [ -n "\$(command -v unzip)" ]; then
     my_ext="zip,\$my_ext"
 fi
+# for mac/linux 'exe' refers to the uncompressed binary without extension
+my_ext="exe,\$my_ext"
 if [ -n "\$(command -v tar)" ]; then
     my_ext="tar,\$my_ext"
 fi
index df34ad2cd5aec75d469023ffb6243485be8b5fba..3003bb9f62de851deebfcecd950ae3c4ef72d207 100644 (file)
@@ -38,8 +38,10 @@ var arches = [
   's390x'
 ];
 var archMap = {
-  amd64: /(amd.?64|x64|[_\-]64)/i,
-  x86: /(86)(\b|_)/i,
+  //amd64: /(amd.?64|x64|[_\-]64)/i,
+  amd64: /(\b|_|amd|(dar)?win(dows)?|mac(os)?|linux|osx|x)64(\b|_)/i,
+  //x86: /(86)(\b|_)/i,
+  x86: /(\b|_|amd|(dar)?win(dows)?|mac(os)?|linux|osx|x)(86|32)(\b|_)/i,
   ppc64le: /(\b|_)(ppc64le)/i,
   ppc64: /(\b|_)(ppc64)(\b|_)/i,
   arm64: /(\b|_)(arm64|arm)/i,
@@ -86,8 +88,12 @@ function normalize(all) {
       // pkg-v1.0.tar.gz => ['gz', 'tar', '0', 'pkg-v1']
       // pkg-v1.0.tar => ['tar', '0' ,'pkg-v1']
       // pkg-v1.0.zip => ['zip', '0', 'pkg-v1']
-      var exts = (rel.name || rel.download).split('.').reverse().slice(0, 2);
-      var ext;
+      var exts = (rel.name || rel.download).split('.');
+      if (1 === exts.length) {
+        // for bare releases in the format of foo-linux-amd64
+        rel.ext = 'exe';
+      }
+      exts = exts.reverse().slice(0, 2);
       if ('tar' === exts[1]) {
         rel.ext = exts.reverse().join('.');
       } else if ('tgz' == exts[0]) {
@@ -95,6 +101,10 @@ function normalize(all) {
       } else {
         rel.ext = exts[0];
       }
+      if (/\-|linux|mac|os[_\-]?x|arm|amd|86|64|mip/i.test(rel.ext)) {
+        // for bare releases in the format of foo.linux-amd64
+        rel.ext = 'exe';
+      }
     }
     supported.formats[rel.ext] = true;
 
index ed590c154a6c2040cc849475f4fc7fc3abea16f3..1f231976a345d56a212d2b089d65dd55c59e03ad 100644 (file)
@@ -180,8 +180,8 @@ webi_extract() {
             echo "Extracting $HOME/Downloads/$WEBI_PKG_FILE"
             unzip "$HOME/Downloads/$WEBI_PKG_FILE" > __unzip__.log
         elif [ "exe" == "$WEBI_EXT" ]; then
-            # do nothing (but don't leave an empty if block either)
-            true
+            echo "Moving $HOME/Downloads/$WEBI_PKG_FILE"
+            mv "$HOME/Downloads/$WEBI_PKG_FILE" .
         elif [ "xz" == "$WEBI_EXT" ]; then
             echo "Inflating $HOME/Downloads/$WEBI_PKG_FILE"
             unxz -c "$HOME/Downloads/$WEBI_PKG_FILE" > $(basename "$WEBI_PKG_FILE")
@@ -268,7 +268,7 @@ if [ -n "$(command -v pkg_get_current_version)" ]; then
         pkg_dst_cmd="${pkg_dst_cmd:-$HOME/.local/bin/$pkg_cmd_name}"
         pkg_dst="$pkg_dst_cmd" # "$(dirname "$(dirname $pkg_dst_cmd)")"
 
-        pkg_src_cmd="${pkg_src_cmd:-$HOME/.local/xbin/$pkg_cmd_name-$WEBI_VERSION}"
+        pkg_src_cmd="${pkg_src_cmd:-$HOME/.local/xbin/$pkg_cmd_name-v$WEBI_VERSION}"
         pkg_src="$pkg_src_cmd" # "$(dirname "$(dirname $pkg_src_cmd)")"
     else
         pkg_dst="${pkg_dst:-$HOME/.local/opt/$pkg_cmd_name}"
index ebe0a02ac93759bc9ce8aba9afb0e3fd34d4b392..7d8de291ee643c0a19da0cef62292933ec275c23 100644 (file)
@@ -18,6 +18,10 @@ if (!(Test-Path -Path .local\bin))
 {
     New-Item -Path .local\bin -ItemType Directory
 }
+if (!(Test-Path -Path .local\xbin))
+{
+    New-Item -Path .local\xbin -ItemType Directory
+}
 Set-Content -Path .local\bin\webi.bat -Value "@echo off`r`npushd %USERPROFILE%`r`npowershell -ExecutionPolicy Bypass .local\bin\webi.ps1 %1`r`npopd"
 if (!(Test-Path -Path .local\opt))
 {
@@ -52,9 +56,10 @@ if (!(Test-Path -Path .local\bin\pathman.exe))
 
 # Fetch <whatever>.ps1
 # TODO detect formats
-# Invoke-WebRequest -UserAgent "Windows amd64" "$Env:WEBI_HOST/api/installers/$exename.ps1?formats=zip,tar" -OutFile ".\.local\tmp\$exename.install.ps1"
-echo "Downloading $Env:WEBI_HOST/api/installers/$exename.ps1?formats=zip,tar"
-& curl.exe -fsSL -A "$Env:WEBI_UA" "$Env:WEBI_HOST/api/installers/$exename.ps1?formats=zip,tar" -o .\.local\tmp\$exename.install.ps1
+$PKG_URL = "$Env:WEBI_HOST/api/installers/$exename.ps1?formats=zip,exe,tar"
+echo "Downloading $PKG_URL"
+# Invoke-WebRequest -UserAgent "Windows amd64" "$PKG_URL" -OutFile ".\.local\tmp\$exename.install.ps1"
+& curl.exe -fsSL -A "$Env:WEBI_UA" "$PKG_URL" -o .\.local\tmp\$exename.install.ps1
 
 # Run <whatever>.ps1
 powershell .\.local\tmp\$exename.install.ps1