David Blume's GitList
Repositories
dotfiles.git
Code
Commits
Branches
Tags
Search
Tree:
38ded8c
Branches
Tags
main
pathogen
remove-vim-airline
vim-airline-disabled
vim-powerline
dotfiles.git
setup.sh
Make the setup script better indicate what it did to the .vim files.
David Blume
commited
38ded8c
at 2018-04-26 23:30:45
setup.sh
Blame
History
Raw
#!/usr/bin/env bash set -eu -o pipefail # See: https://sipb.mit.edu/doc/safe-shell/ declare -r SCRIPT_NAME=$(basename "$BASH_SOURCE") declare -r backup_dir=$HOME/backup_of_dotfiles_`date "+%Y-%m-%d"` declare -a dotfiles=(".bashrc" ".bash_profile" ".vimrc" ".editrc" ".gitconfig" ".gitignore" ".inputrc" ".ssh/config") declare -i DRY_RUN=0 ## exit the shell (with status 2) after printing the message usage() { echo "\ $SCRIPT_NAME -hn -h Print this help text -n Perform a dry run, to see what'll change " exit 2; } ## Process the options while getopts "hn" OPTION do case $OPTION in h) usage;; n) DRY_RUN=1;; \?) usage;; esac done if [ ! -d $backup_dir/.ssh ]; then ((DRY_RUN==0)) && mkdir -p $backup_dir/.ssh fi # Move original dot files to backup for i in "${dotfiles[@]}" do if [ -e $HOME/"$i" ]; then if ! cmp --silent $HOME/"$i" "$i" ; then echo "$i" will be changed as follows: diff $HOME/"$i" "$i" || true if [ $DRY_RUN -eq 0 ]; then mv $HOME/"$i" $backup_dir/"$i" # Consider using symbolic links instead # so pulling updates automatically apply cp "$i" $HOME/"$i" echo "# vimdiff \"$HOME/$i\" \"$backup_dir/$i\"" else # Provide a diff that can still be used echo "# vimdiff \"$i\" \"$HOME/$i\"" fi echo else echo No change to "$i". fi else echo "$i" will be added to HOME. ((DRY_RUN==0)) && cp "$i" $HOME/"$i" fi done if ! diff -qr $HOME/.vim .vim > /dev/null ; then if [ $DRY_RUN -eq 0 ]; then if [ -d $HOME/.vim ]; then mv $HOME/.vim $backup_dir fi cp -r .vim $HOME if [ -d $backup_dir/.vim ]; then # Copy back some proprietary file types, if any. cp -r -n $backup_dir/.vim $HOME fi fi if [ -d $backup_dir/.vim ]; then echo "# diff -qr \"$backup_dir/.vim\" \"$HOME/.vim\"" fi else echo No change to the .vim directories. fi echo Your old dotfiles are backed up to $backup_dir # Make a directory for vim undo if [ ! -d $HOME/.vim_undo ]; then ((DRY_RUN==0)) && mkdir -p $HOME/.vim_undo fi # Tell David what's left. echo Done. Check http://config.dlma.com for more.