diff options
author | Tom Ryder <tom@sanctum.geek.nz> | 2013-07-03 17:01:25 +1200 |
---|---|---|
committer | Tom Ryder <tom@sanctum.geek.nz> | 2013-07-03 17:01:25 +1200 |
commit | 3759cc4eedf17f2535694bc47643cefe9a2553e7 (patch) | |
tree | 4e688fe0dd3f42fe0b0d5e0499beb0111319d5f9 /install | |
parent | Local variable no longer needed (diff) | |
download | dotfiles-3759cc4eedf17f2535694bc47643cefe9a2553e7.tar.gz dotfiles-3759cc4eedf17f2535694bc47643cefe9a2553e7.zip |
Much friendlier and tidier install script
Diffstat (limited to 'install')
-rwxr-xr-x | install | 95 |
1 files changed, 52 insertions, 43 deletions
@@ -1,51 +1,60 @@ #!/usr/bin/env bash -# Check out submodules. The --git-dir option doesn't work here. -cd "${HOME}/.dotfiles" -git submodule --quiet update --init -cd "${OLDPWD}" +# Just stop if any problems +set -o errexit -# Link in files, replacing whatever's already there. -ln -fs ".dotfiles/bash/bashrc" "${HOME}/.bashrc" -ln -fs ".dotfiles/sh/profile" "${HOME}/.profile" -ln -fs ".dotfiles/git/gitconfig" "${HOME}/.gitconfig" -ln -fs ".dotfiles/mutt/muttrc" "${HOME}/.muttrc" -ln -fs ".dotfiles/readline/inputrc" "${HOME}/.inputrc" -ln -fs ".dotfiles/tmux/tmux.conf" "${HOME}/.tmux.conf" -ln -fs ".dotfiles/vim/vimrc" "${HOME}/.vimrc" -ln -fs ".dotfiles/vim/gvimrc" "${HOME}/.gvimrc" +# Refuse to expand empty variables +set -o nounset -# Link in shell stuff. -[[ -e "${HOME}/.bashrc.d" ]] && rm -r "$HOME/.bashrc.d" -ln -fs ".dotfiles/bash/bashrc.d" "${HOME}/.bashrc.d" -[[ -e "${HOME}/.profile.d" ]] && rm -r "$HOME/.profile.d" -ln -fs ".dotfiles/sh/profile.d" "${HOME}/.profile.d" - -# Link in Mutt stuff. -[[ -e "${HOME}/.mutt" ]] && rm -r "${HOME}/.mutt" -ln -fs ".dotfiles/mutt" "${HOME}/.mutt" +# Define dotfiles directory +dotfiles=$HOME/.dotfiles -# Link in Newsbeuter stuff, annoyingly it prefers XDG. -mkdir -p "${HOME}/.config" -mkdir -p "${HOME}/.local/share/newsbeuter" -[[ -e "${HOME}/.config/newsbeuter" ]] && rm -r "${HOME}/.config/newsbeuter" -ln -fs "../.dotfiles/newsbeuter" "${HOME}/.config/newsbeuter" +# Check out submodules +(cd $dotfiles && git submodule --quiet update --init ) -# Link in Vim stuff. -[[ -e "${HOME}/.vim" ]] && rm -r "${HOME}/.vim" -ln -fs ".dotfiles/vim" "${HOME}/.vim" +# Link in essentials +ln -insv $dotfiles/bash/bashrc $HOME/.bashrc +ln -insv $dotfiles/bash/bashrc.d $HOME/.bashrc.d +ln -insv $dotfiles/readline/inputrc $HOME/.inputrc +ln -insv $dotfiles/sh/profile $HOME/.profile +ln -insv $dotfiles/sh/profile.d $HOME/.profile.d +ln -insv $dotfiles/terminfo $HOME/.terminfo +ln -insv $dotfiles/vim/vimrc $HOME/.vimrc +ln -insv $dotfiles/vim $HOME/.vim -# Link in Terminfo database. -[[ -e "${HOME}/.terminfo" ]] && rm -r "${HOME}/.terminfo" -ln -fs ".dotfiles/terminfo" "${HOME}/.terminfo" - -# Optionally link in X and Awesome stuff. -if [[ $1 == "-X" ]]; then - ln -fs ".dotfiles/X/Xmodmap" "${HOME}/.Xmodmap" - ln -fs ".dotfiles/X/Xresources" "${HOME}/.Xresources" - ln -fs ".dotfiles/X/xsession" "${HOME}/.xsession" - ln -fs ".dotfiles/X/xsessionrc" "${HOME}/.xsessionrc" - [[ -e "${HOME}/.config/awesome" ]] && rm -r "${HOME}/.config/awesome" - ln -fs "../.dotfiles/awesome" "${HOME}/.config/awesome" -fi +# Link in shell stuff. +while getopts :gmnptx opt +do + case $opt in + g) + ln -insv $dotfiles/git/gitconfig $HOME/.gitconfig + ;; + m) + ln -insv $dotfiles/mutt/muttrc $HOME/.muttrc + ln -insv $dotfiles/mutt $HOME/.mutt + ;; + n) + mkdir -pv $HOME/.config $HOME/.local/share/newsbeuter + ln -insv $dotfiles/newsbeuter $HOME/.config + ;; + p) + mkdir -pv $HOME/.gnupg + ln -insv $dotfiles/gnupg/gpg.conf $HOME/.gnupg + ln -insv $dotfiles/gnupg/gpg-agent.conf $HOME/.gnupg + ;; + t) + ln -insv $dotfiles/tmux/tmux.conf $HOME/.tmux.conf + ;; + x) + mkdir -pv $HOME/.config + ln -insv $dotfiles/X/Xmodmap $HOME/.Xmodmap + ln -insv $dotfiles/X/Xresources $HOME/.Xresources + ln -insv $dotfiles/X/xsession $HOME/.xsession + ln -insv $dotfiles/X/xsessionrc $HOME/.xsessionrc + ln -insv $dotfiles/vim/gvimrc $HOME/.gvimrc + ln -insv $dotfiles/awesome $HOME/.config/awesome + ;; + esac +done +shift $((OPTIND-1)) |