#!/bin/sh #SCRIPT=$(readlink -f "$0") #RC_PATH=$(dirname "$SCRIPT") RC_PATH=$(cd "$(dirname "$0")"; pwd) HOST=$(hostname) XDG_CONFIG_HOME=${XDG_CONFIG_HOME:-$HOME/.config} XDG_DATA_HOME=${XDG_DATA_HOME:-$HOME/.local/share} # List of the config files to install FILES="vimrc zshrc gitconfig vim gitignore_global git_user ctags.d mailcap xinitrc" CONF_DIR="config" DATA_DIR="data" if [ ! -e "$HOME/.git_user" ]; then cp "$RC_PATH/git_user.def" "$RC_PATH/git_user" sed -i -e "s/{username}/$USER/" "$RC_PATH/git_user" sed -i -e "s/{email}/$USER@$HOST/" "$RC_PATH/git_user" fi # Init or update submodules cd "$RC_PATH" || exit git submodule update --init --recursive cd - > /dev/null || exit # Create symbolic links in the user's home dir for file in $FILES do if [ ! -e "$HOME/.${file}" ]; then ln -s "${RC_PATH}/${file}" "$HOME/.${file}" # Only warn if an actual file exist, else we suppose it is from a previous install elif [ ! -L "$HOME/.$file" ]; then >&2 echo "File $HOME/.$file exists. Keeping old version." fi done mkdir -p "$XDG_CONFIG_HOME" mkdir -p "$XDG_DATA_HOME" # https://github.com/koalaman/shellcheck/wiki/SC2156 find "$RC_PATH/$CONF_DIR" -mindepth 1 -maxdepth 1 -type d \ -exec sh -c 'ln -s "$2" "$1" 2> /dev/null || ( link="$1/$(basename "$2")"; test -L "$link" || >&2 echo "Folder $link exists. Keeping old version.")' _ "$XDG_CONFIG_HOME" '{}' \; find "$RC_PATH/$DATA_DIR" -mindepth 1 -maxdepth 1 -type d \ -exec sh -c 'ln -s "$2" "$1" 2> /dev/null || ( link="$1/$(basename "$2")"; test -L "$link" || >&2 echo "Folder $link exists. Keeping old version.")' _ "$XDG_DATA_HOME" '{}' \;