From 535d0dd5aba279960a175c85bbbaf36826413aba Mon Sep 17 00:00:00 2001
From: Joel Grunbaum <joelgrun@gmail.com>
Date: Sun, 02 Jan 2022 04:18:18 +0000
Subject: [PATCH] Broke choice dialogue into own function and included for sudo

---
 INSTALL.sh |   78 ++++++++++++++++++++++-----------------
 1 files changed, 44 insertions(+), 34 deletions(-)

diff --git a/INSTALL.sh b/INSTALL.sh
index 2e975bb..6ebd948 100755
--- a/INSTALL.sh
+++ b/INSTALL.sh
@@ -1,48 +1,58 @@
 #!/bin/sh
 
+install_conflict() {
+    file="$1";
+    loc="$2";
+    if [ -n "$3" ]; then
+        SUPERUSER="sudo"
+    else
+        SUPERUSER="";
+    fi
+    while true; do
+        CHOICE="overwrite"
+        if [ -e "$loc" ] && [ "$FORCE" = "0" ]; then
+            echo "WARNING: \"$loc\" exists, (overwrite, change, nothing): "
+            read CHOICE
+        fi
+        case "$CHOICE" in
+            o|overwrite)
+	            dir=$(dirname "$loc")
+	            $SUPERUSER mkdir -p "$dir"
+	            $SUPERUSER ln -sf "$(pwd)/$file" "$loc"; break;;
+            c|change)
+                tmpfile=$(mktemp)
+                echo "$loc" >> "$tmpfile"
+                $EDITOR "$tmpfile"
+                loc=$(cat "$tmpfile")
+                rm "$tmpfile"
+                unset tmpfile;;
+            n|nothing)
+                break;;
+            *)
+                echo "INVALID CHOICE \"$CHOICE\", (overwrite, change, nothing)"
+                read CHOICE
+        esac
+    done
+
+}
+
 install_links() {
     . ./DICT
     if [ -n "$FILES" ]; then
 	for i in $(seq 1 "$(echo "$FILES" | wc -w)"); do
 	    file=$(echo "$FILES" | cut -d' ' -f "$i")
 	    loc=$(echo "$LOCATIONS" | cut -d' ' -f "$i")
-        while true; do
-            CHOICE="overwrite"
-            if [ -e "$loc" ] && [ "$FORCE" = "0" ]; then
-                echo "WARNING: \"$loc\" exists, (overwrite, change, nothing): "
-                read CHOICE
-            fi
-            case "$CHOICE" in
-                o|overwrite)
-	                dir=$(dirname "$loc")
-	                mkdir -p "$dir"
-	                ln -sf "$(pwd)/$file" "$loc"; break;;
-                c|change)
-                    tmpfile=$(mktemp)
-                    echo "$loc" >> "$tmpfile"
-                    $EDITOR "$tmpfile"
-                    loc=$(cat "$tmpfile")
-                    rm "$tmpfile"
-                    unset tmpfile;;
-                n|nothing)
-                    break;;
-                *)
-                    echo "INVALID CHOICE \"$CHOICE\", (overwrite, change, nothing)"
-                    read CHOICE
-            esac
-        done
+        install_conflict "$file" "$loc"
 	done
     fi
     if [ -n "$SUDO_FILES" ]; then
-	for i in $(seq 1 "$(echo "$SUDO_FILES" | wc -w)"); do
-	    file=$(echo "$SUDO_FILES" | cut -d' ' -f "$i")
-	    loc=$(echo "$SUDO_LOCATIONS" | cut -d' ' -f "$i")
-	    dir=$(echo "$loc" | rev | cut -d'/' -f2- | rev)
-	    sudo mkdir -p "$dir"
-	    sudo ln -sf "$(pwd)/$file" "$loc"
-	done
+	    for i in $(seq 1 "$(echo "$SUDO_FILES" | wc -w)"); do
+	        file=$(echo "$SUDO_FILES" | cut -d' ' -f "$i")
+	        loc=$(echo "$SUDO_LOCATIONS" | cut -d' ' -f "$i")
+            install_conflict "$file" "$loc" 1
+	    done
     fi
-    if type custom | grep -q "function" ; then
+    if type custom 2>/dev/null | grep -q "function" ; then
 	    custom install
     fi
 }
@@ -77,7 +87,6 @@
 }
 
 handle_package() {
-    echo "$1"
     if [ -d "$1" ]; then
 	unset DEPS
 	eval "$(grep "DEPS=" "$1/DICT")"
@@ -88,6 +97,7 @@
             fi
 	    done
     fi
+    echo "$1"
     echo "$1" >> "$PACKAGE_CACHE"
 	(cd "$1" || exit; "$([ "$INSTALL" = "1" ] && echo install || echo remove)_links")
     else

--
Gitblit v1.9.3