dotfiles/install-dotfiles.sh
2014-06-23 23:28:04 -04:00

84 lines
1.6 KiB
Bash
Executable File

#!/usr/bin/env bash
#
# Symlinks ALL the things! (really just all the .dotfile files)
set -e
cd "$(dirname $0)"
export DOTFILES_ROOT="`pwd`"
create_link () {
ln -s $1 $2
echo "linked $1 to $2"
}
overwrite_all=false
backup_all=false
skip_all=false
install_file () {
src=$1
dest=$2
if [ -f $dest ] || [ -d $dest ]
then
overwrite=false
backup=false
skip=false
if [ "$overwrite_all" == "false" ] && [ "$backup_all" == "false" ] && [ "$skip_all" == "false" ]
then
echo "conflict adding $dest"
echo "[s]kip, [S]kip all, [o]verwrite, [O]verwrite all, [b]ackup, [B]ackup all: "
echo -n "> "
read -n 1 cmd
echo ""
case "$cmd" in
o ) overwrite=true;;
O ) overwrite_all=true;;
b ) backup=true;;
B ) backup_all=true;;
s ) skip=true;;
S ) skip_all=true;;
* ) ;;
esac
fi
if [ "$overwrite" == "true" ] || [ "$overwrite_all" == "true" ]
then
rm -rf $dest
echo "removed $dest"
fi
if [ "$backup" == "true" ] || [ "$backup_all" == "true" ]
then
mv $dest $dest\.bak
echo "moved $dest to $dest.bak"
fi
if [ "$skip" == "true" ] || [ "$skip_all" == "true" ]
then
echo "skipped $src"
else
create_link $src $dest
fi
else
create_link $src $dest
fi
}
for src in `find $DOTFILES_ROOT -name \*.dotfile`
do
dest="$HOME/.`basename \"${src%.*}\"`"
install_file $src $dest
done
for src in `find $DOTFILES_ROOT -name \*.configdir`
do
dest="$HOME/.config/`basename \"${src%.*}\"`"
install_file $src $dest
done
find . -name "setup.*sh" | while read setup; do sh -c "${setup}"; done