mirror of https://github.com/Chizi123/Dotfiles.git

Joel Grunbaum
2021-12-22 f86690f5bd27074a1784c65fffaaa7974c214e3d
Shift from make and stow to shell script to install
1 files added
117 ■■■■■ changed files
INSTALL.sh 117 ●●●●● patch | view | raw | blame | history
INSTALL.sh
New file
@@ -0,0 +1,117 @@
#!/bin/sh
install_links() {
    source ./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)
        dir=$(echo "$loc" | rev | cut -d'/' -f2- | rev)
        mkdir -p "$dir"
        ln -sf "$(pwd)/$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
    fi
    if [ "$(type -t custom)" = "function" ]; then
    custom install
    fi
}
remove_links() {
    source ./DICT
    if [ -n "$FILES" ]; then
    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
        rm -r "$loc"
        loc=$(echo "$loc" | rev | cut -d'/' -f2- | rev)
        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)
        sudo rm "$loc" 2>/dev/null
        loc=$(echo "$loc" | rev | cut -d'/' -f2- | rev)
        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
    fi
}
handle_package() {
if [ -d "$1" ]; then
    (cd "$1"; $2)
    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 "Directories have the configurations for their programs/use cases"
    echo "List all configurations to be installed in the command line"
    echo "Example usage: $0 -i bash zsh"
}
INSTALL=1
PACKAGES=""
FUNCTION=""
while [ -n "$1" ]; do
      case "$1" in
      -h|--help|"") usage; exit;;
      -i|--install) INSTALL=1;;
      -r|--remove) INSTALL=0;;
      --) shift; break;;
      -*) echo "Invalid argument"; usage; exit;;
      *) handle_package "$1" "$([ \"$INSTALL\" = \"1\" ] && echo install || echo remove)_links";;
      esac
      shift
done
# case "$1" in
#     -*) echo "Only one argument allowed"; exit;;
# esac
# while [ -n "$1" ]; do
#     PACKAGES="$PACKAGES $1"
#     shift
# done
# if [ "$INSTALL" = "1" ] && [ "$REMOVE" = "0" ]; then
#     FUNCTION="install_links"
# elif [ "$INSTALL" = "0" ] && [ "$REMOVE" = "1" ]; then
#     FUNCTION="remove_links"
# else
#     echo "Need to specify install or removal of configs"
#     exit 1
# fi
# for i in $PACKAGES; do
#     if [ -d "$i" ]; then
#     (cd "$i"; $FUNCTION)
#     else
#     echo "No configuration found for $i"
#     fi
# done
# (cd $1; install_links)
# (cd $1; remove_links)