add version info to deno downloads
[webi-installers/.git] / _webi / template.sh
index fc7629a27fec5bf2b4543f1614bd94d46e504975..643be6ccaa1852fe81312b45857c4aecfdd83327 100644 (file)
@@ -1,6 +1,6 @@
 #!/bin/bash
 
-{
+function __bootstrap_webi() {
 
 set -e
 set -u
@@ -156,7 +156,11 @@ webi_download() {
         # wget has resumable downloads
         # TODO wget -c --content-disposition "$my_url"
         set +e
-        wget -q --show-progress --user-agent="wget $WEBI_UA" -c "$my_url" -O "$my_dl.part"
+        my_show_progress=""
+        if [[ $- == *i* ]]; then
+          my_show_progress="--show-progress"
+        fi
+        wget -q $my_show_progress --user-agent="wget $WEBI_UA" -c "$my_url" -O "$my_dl.part"
         if ! [ $? -eq 0 ]; then
           >&2 echo "failed to download from $WEBI_PKG_URL"
           exit 1
@@ -165,7 +169,11 @@ webi_download() {
     else
         # Neither GNU nor BSD curl have sane resume download options, hence we don't bother
         # TODO curl -fsSL --remote-name --remote-header-name --write-out "$my_url"
-        curl -fSL -H "User-Agent: curl $WEBI_UA" "$my_url" -o "$my_dl.part"
+        my_show_progress="-#"
+        if [[ $- == *i* ]]; then
+          my_show_progress=""
+        fi
+        curl -fSL $my_show_progress -H "User-Agent: curl $WEBI_UA" "$my_url" -o "$my_dl.part"
     fi
     mv "$my_dl.part" "$my_dl"
 
@@ -211,7 +219,8 @@ webi_path_add() {
 
     # in case pathman was recently installed and the PATH not updated
     mkdir -p "$_webi_tmp"
-    "$HOME/.local/bin/pathman" add "$1" | grep "export" >> "$_webi_tmp/.PATH.env" || true
+    # prevent "too few arguments" output on bash when there are 0 lines of stdout
+    "$HOME/.local/bin/pathman" add "$1" | grep "export" 2>/dev/null >> "$_webi_tmp/.PATH.env" || true
 }
 
 # group common pre-install tasks as default
@@ -226,7 +235,6 @@ webi_install() {
     if [ -n "$WEBI_SINGLE" ] || [ "single" == "${1:-}" ]; then
         mkdir -p "$(dirname $pkg_src_cmd)"
         mv ./"$pkg_cmd_name"* "$pkg_src_cmd"
-        chmod a+x "$pkg_src_cmd"
     else
         rm -rf "$pkg_src"
         mv ./"$pkg_cmd_name"* "$pkg_src"
@@ -239,6 +247,13 @@ webi_post_install() {
 }
 
 _webi_enable_exec() {
+    if [ -n "$(command -v spctl)" ] && [ -n "$(command -v xattr)" ] ; then
+        # note: some packages contain files that cannot be affected by xattr
+        xattr -r -d com.apple.quarantine "$pkg_src" || true
+        return 0
+    fi
+    # TODO need to test that the above actually worked
+    # (and proceed to this below if it did not)
     if [ -n "$(command -v spctl)" ]; then
         echo "Checking permission to execute '$pkg_cmd_name' on macOS 11+"
         set +e
@@ -277,12 +292,14 @@ echo "Have a problem? Experience a bug? Please let us know:"
 echo "        https://github.com/webinstall/packages/issues"
 echo ""
 
-{
+function __init_installer() {
 
 {{ installer }}
 
 }
 
+__init_installer
+
 ##
 ##
 ## END custom override functions
@@ -315,14 +332,16 @@ if [ -n "$(command -v pkg_get_current_version)" ]; then
     pushd "$WEBI_TMP" 2>&1 >/dev/null
         echo "Installing to $pkg_src_cmd"
         [ -n "$(command -v pkg_install)" ] && pkg_install || webi_install
+        chmod a+x "$pkg_src"
+        chmod a+x "$pkg_src_cmd"
     popd 2>&1 >/dev/null
 
     webi_link
 
+    _webi_enable_exec
     pushd "$WEBI_TMP" 2>&1 >/dev/null
         [ -n "$(command -v pkg_post_install)" ] && pkg_post_install || webi_post_install
     popd 2>&1 >/dev/null
-    _webi_enable_exec
 
     pushd "$WEBI_TMP" 2>&1 >/dev/null
         [ -n "$(command -v pkg_done_message)" ] && pkg_done_message || _webi_done_message
@@ -345,3 +364,5 @@ rm -rf "$WEBI_TMP"
 # See? No magic. Just downloading and moving files.
 
 }
+
+__bootstrap_webi