#!/bin/bash dotfiles="$(dirname "$(dirname "$(readlink -f "$0")")")" dot_ln() { rel="$(echo "${1#$dotfiles/}" | sed -e 's~[^/]\+~..~g')/" ln -s "${rel#../}${1#$HOME/}" "$HOME/$2" } find $dotfiles -mindepth 1 -type d \( -name '[+.]*' -prune -o -print \) | while read d; do mkdir -p "$HOME/.${d#$dotfiles/}" done find $dotfiles -mindepth 1 -maxdepth 1 -type d -name '+*' | while read d; do rm -f "$HOME/${d#$dotfiles/+}" dot_ln "$d" "${d#$dotfiles/+}" done find $dotfiles -mindepth 1 \( -name '[+.]*' -prune -o -not -type d -print \) | while read f; do rm -f "$HOME/.${f#$dotfiles/}" dot_ln "$f" ".${f#$dotfiles/}" done for cache in mutt ssh gdb zsh rlwrap ccache; do mkdir -p "$HOME/.cache/$cache" done