0bd0da74a73b1f596c34f03d2e0180b8da3a1de6
David Blume Improve setup.sh portability.

David Blume authored 9 years ago

1) #!/usr/bin/env bash
David Blume first commit

David Blume authored 9 years ago

2) set -eu -o pipefail # See: https://sipb.mit.edu/doc/safe-shell/
3) 
David Blume Make setup.sh only backup c...

David Blume authored 9 years ago

4) declare -r SCRIPT_NAME=$(basename "$BASH_SOURCE")
David Blume Add a .gitignore file

David Blume authored 9 years ago

5) declare -r backup_dir=$HOME/backup_of_dotfiles_`date "+%Y-%m-%d"`
David Blume Add .inputrc for matched-hi...

David Blume authored 9 years ago

6) declare -a dotfiles=(".bashrc" ".bash_profile" ".vimrc" 
David Blume Add workaround for OpenSSH...

David Blume authored 8 years ago

7)                      ".gitconfig" ".gitignore" ".inputrc" ".ssh/config")
David Blume Make setup.sh only backup c...

David Blume authored 9 years ago

8) declare -i DRY_RUN=0
9) 
10) ## exit the shell (with status 2) after printing the message
11) usage() {
12)     echo "\
13) $SCRIPT_NAME -hn
14)     -h      Print this help text
15)     -n      Perform a dry run, to see what'll change
16) "
17)     exit 2;
18) }
19) 
20) ## Process the options
21) while getopts "hn" OPTION
22) do
23)   case $OPTION in
24)     h) usage;;
25)     n) DRY_RUN=1;;
26)     \?) usage;;
27)   esac
28) done
David Blume first commit

David Blume authored 9 years ago

29) 
30) if [ ! -d $backup_dir ]; then
David Blume Make setup.sh only backup c...

David Blume authored 9 years ago

31)     ((DRY_RUN==0)) && mkdir -p $backup_dir
David Blume first commit

David Blume authored 9 years ago

32) fi
33) 
34) # Move original dot files to backup
David Blume Add a .gitignore file

David Blume authored 9 years ago

35) for i in "${dotfiles[@]}"
36) do
37)     if [ -e $HOME/"$i" ]; then
David Blume Make setup.sh only backup c...

David Blume authored 9 years ago

38)         if ! cmp --silent $HOME/"$i" "$i" ; then
David Blume Replaced tabs with spaces.

David Blume authored 9 years ago

39)             echo "$i" will be changed as follows:
40)             diff $HOME/"$i" "$i" || true
David Blume Make setup.sh only backup c...

David Blume authored 9 years ago

41)             if [ $DRY_RUN -eq 0 ]; then
David Blume Minor tweaks to config file...

David Blume authored 8 years ago

42)                 mv $HOME/"$i" $backup_dir/"$i"
David Blume Make setup.sh only backup c...

David Blume authored 9 years ago

43)                 # Consider using symbolic links instead
44)                 # so pulling updates automatically apply
David Blume Minor tweaks to config file...

David Blume authored 8 years ago

45)                 cp "$i" $HOME/"$i"
David Blume Make setup.sh only backup c...

David Blume authored 9 years ago

46)             fi
David Blume Replaced tabs with spaces.

David Blume authored 9 years ago

47)         else
48)             echo No change to "$i".
49)         fi
David Blume Make setup.sh only backup c...

David Blume authored 9 years ago

50)     else
51)         echo "$i" will be added to HOME.
David Blume Minor tweaks to config file...

David Blume authored 8 years ago

52)         ((DRY_RUN==0)) && cp "$i" $HOME/"$i"
David Blume Add a .gitignore file

David Blume authored 9 years ago

53)     fi
54) done
David Blume first commit

David Blume authored 9 years ago

55) 
David Blume Make setup.sh only backup c...

David Blume authored 9 years ago

56) if [ $DRY_RUN -eq 0 ]; then
57)     if [ -d $HOME/.vim ]; then
58)         mv $HOME/.vim $backup_dir
59)     fi
60)     cp -r .vim $HOME
David Blume Add BrightScript syntax, an...

David Blume authored 8 years ago

61)     if [ -d $backup_dir/.vim ]; then
62) 	# Copy back some proprietary file types, if any.
63)         cp -r -n $backup_dir/.vim $HOME
64)     fi
David Blume Make setup.sh only backup c...

David Blume authored 9 years ago

65) fi
David Blume first commit

David Blume authored 9 years ago

66) 
David Blume Make setup.sh only backup c...

David Blume authored 9 years ago

67) echo Your old dotfiles are backed up to $backup_dir
David Blume first commit

David Blume authored 9 years ago

68) 
69) # Make a directory for vim undo
70) if [ ! -d $HOME/.vim_undo ]; then
David Blume Make setup.sh only backup c...

David Blume authored 9 years ago

71)     ((DRY_RUN==0)) && mkdir -p $HOME/.vim_undo