From b15df10cd9a91fc7c3c088417134af478bb73730 Mon Sep 17 00:00:00 2001
From: Joel Grunbaum <joelgrun@gmail.com>
Date: Wed, 26 Oct 2022 04:24:57 +0000
Subject: [PATCH] Added login shell profiles to source configs for wayland firefox
---
INSTALL.sh | 161 +++++++++++++++++++++++++++++------------------------
1 files changed, 89 insertions(+), 72 deletions(-)
diff --git a/INSTALL.sh b/INSTALL.sh
index 72f1af1..6ebd948 100755
--- a/INSTALL.sh
+++ b/INSTALL.sh
@@ -1,116 +1,130 @@
#!/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 [ 1 ]; do
- CHOICE="overwrite"
- if [ -a "$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
+ for i in $(seq 1 "$(echo "$FILES" | wc -w)"); do
+ file=$(echo "$FILES" | cut -d' ' -f "$i")
+ loc=$(echo "$LOCATIONS" | cut -d' ' -f "$i")
+ 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 -t custom)" = "function" ]; then
- custom install
+ if type custom 2>/dev/null | grep -q "function" ; then
+ custom install
fi
}
remove_links() {
. ./DICT
if [ -n "$FILES" ]; then
- for i in `seq 1 $(echo $FILES | wc -w)`; do
- loc=$(echo "$LOCATIONS" | cut -d' ' -f $i)
+ for i in $(seq 1 "$(echo "$FILES" | wc -w)"); do
+ loc=$(echo "$LOCATIONS" | cut -d' ' -f "$i")
rm "$loc" 2>/dev/null
- loc=$(echo "$loc" | rev | cut -d'/' -f2- | rev)
- while [ -z "$(ls -A $loc)" ]; do
+ loc=$(dirname "$loc")
+ while [ -z "$(ls -A "$loc")" ]; do
rm -r "$loc"
- loc=$(echo "$loc" | rev | cut -d'/' -f2- | rev)
+ loc=$(dirname "$loc")
done 2>/dev/null
done
fi
if [ -n "$SUDO_FILES" ]; then
- for i in `seq 1 $(echo $SUDO_FILES | wc -w)`; do
- loc=$(echo "$SUDO_LOCATIONS" | cut -d' ' -f $i)
+ for i in $(seq 1 "$(echo "$SUDO_FILES" | wc -w)"); do
+ loc=$(echo "$SUDO_LOCATIONS" | cut -d' ' -f "$i")
sudo rm "$loc" 2>/dev/null
loc=$(echo "$loc" | rev | cut -d'/' -f2- | rev)
- while [ -z "ls -A $loc" ]; do
+ while [ -z "$(ls -A "$loc")" ]; do
sudo rm -r "$loc"
loc=$(echo "$loc" | rev | cut -d'/' -f2- | rev)
done 2>/dev/null
done
fi
- if [ "$(type -t custom)" = "function" ]; then
- custom remove
+ if type custom | grep -q "function"; then
+ custom remove
fi
}
handle_package() {
- echo $1
if [ -d "$1" ]; then
unset DEPS
- eval $(grep "DEPS=" $1/DICT)
- for i in $DEPS; do
- if ! grep -q "$i" "$PACKAGE_CACHE"; then
- (handle_package $i $2)
- fi
- done
+ eval "$(grep "DEPS=" "$1/DICT")"
+ if ! [ "$INSTALL" = "0" ] && [ "$REMOVE_DEPS" = "0" ]; then
+ for i in $DEPS; do
+ if ! grep -q "$i" "$PACKAGE_CACHE"; then
+ (handle_package "$i")
+ fi
+ done
+ fi
+ echo "$1"
echo "$1" >> "$PACKAGE_CACHE"
- (cd "$1"; $2)
+ (cd "$1" || exit; "$([ "$INSTALL" = "1" ] && echo install || echo remove)_links")
else
echo "No configuration found for $i"
fi
}
usage() {
- echo "Install dotfiles with symlinks"
- echo "Usage with -h|--help"
- echo "Install with -i|--install (default)"
- echo "Remove with -r|--remove"
- echo "Force install with -f|--force"
- echo "Directories have the configurations for their programs/use cases"
- echo "List all configurations to be installed in the command line"
- echo "If there is a file at the install location, you will be prompted to change it"
- echo "Example usage: $0 -i bash zsh"
+ cat << EOF
+USAGE
+ $(basename "$0") [options] configs... ([option] [configs])...
+
+OPTIONS
+ -h, --help Display this help message
+ -i, --install Install packages following this flag (default)
+ -r, --remove Remove packages following this flag
+ -f, --force Force install all packages following this flag
+EOF
}
INSTALL=1
FORCE=0
-PACKAGE_CACHE=$(mktemp)
-DOTFILES_PATH="$(dirname $0)"
+REMOVE_DEPS=0
+PACKAGE_CACHE="$(mktemp)"
+DOTFILES_PATH="$(dirname "$0")"
-cd $DOTFILES_PATH
+cd "$DOTFILES_PATH" || exit
if [ -z "$1" ]; then
usage
@@ -120,18 +134,21 @@
while [ -n "$1" ]; do
case "$1" in
-h|--help|"") usage; exit;;
- -i|--install) INSTALL=1;;
- -r|--remove) INSTALL=0;;
+ -i|--install) INSTALL=1; FORCE=0;;
-f|--force) FORCE=1;;
+ -if|-fi) INSTALL=1; FORCE=1;;
+ -r|--remove) INSTALL=0; REMOVE_DEPS=0;;
+ -d|--deps) REMOVE_DEPS=1;;
+ -rd|-dr) INSTALL=0; REMOVE_DEPS=1;;
--) shift; break;;
-*) echo "Invalid argument"; usage; exit;;
- *) handle_package "$1" "$([ \"$INSTALL\" = \"1\" ] && echo install || echo remove)_links";;
+ *) handle_package "$1";; # "$([ \"$INSTALL\" = \"1\" ] && echo install || echo remove)_links";;
esac
shift
done
while [ -n "$1" ]; do
- handle_package "$1" "$([ \"$INSTALL\" = \"1\" ] && echo install || echo remove)_links"
+ handle_package "$1"
done
-rm $PACKAGE_CACHE
+rm "$PACKAGE_CACHE"
--
Gitblit v1.10.0