From b114ada4f83f9267b2382de60b7833ebc77c2950 Mon Sep 17 00:00:00 2001 From: Joel Grunbaum <joelgrun@gmail.com> Date: Tue, 03 Oct 2023 02:53:40 +0000 Subject: [PATCH] Install now checks that installed file is different to file before asking --- INSTALL.sh | 78 ++++++++++++++++++++++----------------- 1 files changed, 44 insertions(+), 34 deletions(-) diff --git a/INSTALL.sh b/INSTALL.sh index 2e975bb..dd5bfb3 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" ] && [ $(diff "$loc" "$file") ]; 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