summaryrefslogtreecommitdiffstats
path: root/install.sh
diff options
context:
space:
mode:
authorTharre <tharre3@gmail.com>2016-10-07 20:53:06 +0000
committerTharre <tharre3@gmail.com>2016-10-16 15:23:59 +0000
commitedbcca8cd2b93b8c88eb62c431d04ea832b73180 (patch)
treebac188c0ee4c1c214dd50568e70783a7ee2c3565 /install.sh
parentd4f1a0f27100ff2f4380fa4cf38b09e7f0c051f7 (diff)
downloaddotfiles-edbcca8cd2b93b8c88eb62c431d04ea832b73180.tar.gz
dotfiles-edbcca8cd2b93b8c88eb62c431d04ea832b73180.tar.xz
dotfiles-edbcca8cd2b93b8c88eb62c431d04ea832b73180.zip
Reorganise dotfiles
Diffstat (limited to 'install.sh')
-rwxr-xr-xinstall.sh109
1 files changed, 44 insertions, 65 deletions
diff --git a/install.sh b/install.sh
index 8f39a26..e4601b7 100755
--- a/install.sh
+++ b/install.sh
@@ -1,69 +1,48 @@
#!/bin/sh -e
-dotfiles=$(pwd)
-
-# make sure all submodules are there
-git submodule update --init --recursive
-
-# [zsh]
-ln -sf "$dotfiles/shell/_zshrc" "$HOME/.zshrc"
-ln -sfT "$dotfiles/shell/_oh-my-zsh" "$HOME/.oh-my-zsh"
-ln -sfT "$dotfiles/shell/themes" "$HOME/.oh-my-zsh/custom/themes"
-
-# [vim]
-ln -sf "$dotfiles/shell/_vimrc" "$HOME/.vimrc"
-ln -sfT "$dotfiles/shell/_vim" "$HOME/.vim"
-
-# [git]
-ln -sf "$dotfiles/shell/_gitconfig" "$HOME/.gitconfig"
-
-# [tmux]
-ln -sf "$dotfiles/shell/_tmux.conf" "$HOME/.tmux.conf"
-
-# [gdb]
-ln -sf "$dotfiles/shell/_gdbinit" "$HOME/.gdbinit"
-
-# [gpg]
-ln -sfT "$dotfiles/shell/_gnupg" "$HOME/.gnupg"
-
-# [emacs]
-ln -sfT "$dotfiles/shell/_emacs.d" "$HOME/.emacs.d"
-
-# [user dirs]
-ln -sf "$dotfiles/config/user-dirs.dirs" "$HOME/.config/user-dirs.dirs"
-
-# [eclim]
-ln -sf "$dotfiles/shell/_eclimrc" "$HOME/.eclimrc"
-
-# create directories
-mkdir -p ~/bin
-mkdir -p ~/etc
-mkdir -p ~/share
-mkdir -p ~/media
-mkdir -p ~/media/games
-mkdir -p ~/media/music
-mkdir -p ~/media/pictures
-mkdir -p ~/media/videos
-mkdir -p ~/var
-mkdir -p ~/var/cache
-mkdir -p ~/var/downloads
-mkdir -p ~/var/log
-mkdir -p ~/var/run
-mkdir -p ~/var/tmp
-mkdir -p ~/var/vim
-mkdir -p ~/var/VMs
-
-if [ "$1" = "arch" ]; then
- echo "Performing full installation."
-
- # [arch linux]
- ln -sf "$dotfiles/shell/_makepkg.conf" "$HOME/.makepkg.conf"
-
- # [email]
- ln -sfT "$dotfiles/email/_mutt" "$HOME/.mutt"
- ln -sf "$dotfiles/email/_offlineimaprc" "$HOME/.offlineimaprc"
- ln -sf "$dotfiles/email/_msmtprc" "$HOME/.msmtprc"
+if [ "$#" -ne 1 ]; then
+ # make sure all submodules are there
+ git submodule update --init --recursive
+
+ # create directories
+ mkdir -p ~/bin
+ mkdir -p ~/etc
+ mkdir -p ~/share
+ mkdir -p ~/media
+ mkdir -p ~/media/games
+ mkdir -p ~/media/music
+ mkdir -p ~/media/pictures
+ mkdir -p ~/media/videos
+ mkdir -p ~/var
+ mkdir -p ~/var/cache
+ mkdir -p ~/var/downloads
+ mkdir -p ~/var/log
+ mkdir -p ~/var/run
+ mkdir -p ~/var/tmp
+ mkdir -p ~/var/vim
+ mkdir -p ~/var/VMs
mkdir -p ~/.mail
-fi
-echo "Finished installing dotfiles"
+ find . -maxdepth 1 ! -path . ! -name .git ! -name .gitmodules \
+ ! -name .gitignore ! -name .updated -name '.*' -exec "$0" {} \;
+
+ echo "Finished installing dotfiles"
+else
+ canonical=$(echo $1 | sed "s|^\./||")
+ target="$HOME/$canonical"
+ origin="$(pwd)/$canonical"
+
+ if [ ! -e "$target" ] || [ -L "$target" ]; then
+ # target either doesn't exist or is a symbolic link and can thus be
+ # safely replaced
+ ln -sfT "$origin" "$target"
+ elif [ -d "$target" ]; then
+ # target is not a symbolic link, but a directory, thus we link
+ # everything into that directory instead
+
+ find "$canonical" -maxdepth 1 -mindepth 1 ! -name .gitignore \
+ -exec "$0" {} \;
+ else
+ echo "Target file '$target' is not a symlink but exists, skipping"
+ fi
+fi