#!/bin/sh die() { echo "$1" >&2 exit 1 } in_list() { for i in $1 do [ "$i" == "$2" ] && return 0 done return 1 } cd $(dirname "$0") [ -n "${DESTDIR}" ] || DESTDIR=~ if [ "$1" == "install" ] || [ "$1" == "link" ] || [ "$1" == "links" ] then REMOVE=1 BIN="ln -s" elif [ "$1" == "update" ] || [ "$1" == "pull" ] then git stash && git pull --recurse-submodules=yes --rebase `git remote | head -n 1` && git stash pop exit $? elif [ "$1" == "remove" ] || [ "$1" == "uninstall" ] then REMOVE=0 BIN="rm" elif [ "$1" == "copy" ] then REMOVE=1 BIN="cp -r" else echo -e "\e[32;01mNemunaire's configuration \e[0;33m("`git branch --no-color | grep '*' | cut -d " " -f 2-`")\e[0m" echo -e " \e[01mAuthor:\e[0m\t\t"`git log -1 --format="%aN <%aE>"` echo -e " \e[01mOriginal source:\e[0m\thttps://git.nemunai.re/?p=conf.git" echo echo -e "\e[01mUsage:\e[0m" echo -e " $0 \e[36;01minstall\e[0m" echo -e " Create symbolic links from this directory to your home" echo -e " $0 \e[36;01mremove\e[0m" echo -e " Remove symbolic links from your home" echo -e " $0 \e[36;01mupdate\e[0m" echo -e " Pull latest commits from the server at" `git remote -v | head -n 1 | cut -f 2` echo -e " $0 \e[36;01mcopy\e[0m" echo -e " Copy configuration files instead of making links" exit 0 fi git submodule update --init --recursive || die "Unable to update submodules" IGNORE_FILES=". .. .git .gitmodules install.sh" TMPERR=`mktemp` install_dir() { for f in `ls -a "$1"` do if ! in_list "$IGNORE_FILES" "$f" then if [ "$REMOVE" -eq 0 ]; then echo -ne "Removing $1/$f ...\t" if [ -L "${DESTDIR}/$1/$f" ]; then $BIN "${DESTDIR}/$1/$f" >&2 2> "$TMPERR" if [ $? == 0 ]; then echo -e "\e[32mdone\e[0m"; else echo -e "\e[31;01mfail\e[0m"; fi cat "$TMPERR" else echo -e "Not installed" fi else echo -ne "Installing $1/$f ...\t" # Alignment [ $((${#f} + ${#1})) -lt 8 ] && echo -en "\t"; [ $((${#f} + ${#1})) -lt 16 ] && echo -en "\t" if [ -L "${DESTDIR}/$1/$f" ] then echo -e "\e[36mAlready installed\e[0m" elif [ -d "${DESTDIR}/$1/$f" ] && [ -d "$1/$f" ] then echo -e "\e[33mExistant directory\e[0m" install_dir "$1/$f" elif [ -e "${DESTDIR}/$1/$f" ] then echo -e "\e[35mAlready exists\e[0m" else if $BIN "$(pwd)/$1/$f" "${DESTDIR}/$1/$f" >&2 2> "$TMPERR" then echo -e "\e[32mdone\e[0m" else echo -e "\e[31;01mfail\e[0m" fi cat "$TMPERR" fi fi fi done } install_dir . rm "${TMPERR}"