#!/bin/zsh execute() { log "execute $@" && "$@" } log() { echo "$@" } copy_file() { local from=$1 local to=$2 local filename=$(basename $from) [[ -e $to/$filename ]] && execute rm $to/$filename execute cp -p $from $to/$filename } copy_dir() { local from=$1 local to=$2 pushd $from > /dev/null local directories=(`find . -mindepth 1 -maxdepth 1 -type d`) for dir in $directories; do [[ -d $to/$dir ]] && execute rm -rf $to/$dir execute cp -rp $dir $to/$dir done local files=(`find . -mindepth 1 -maxdepth 1 -type f`) for file in $files; do copy_file $file $to done popd > /dev/null } link_dir() { local src_dir=$1 local link_dir=$2 log "deleting existing link/dir: $link_dir" [[ -h "$link_dir" ]] && rm $link_dir [[ -d "$link_dir" ]] && rm -rf $link_dir log "sym-linking $link_dir -> $src_dir" ln -s $src_dir $link_dir } log "---------------- dotfiles ----------------" copy_file src_files/.config/zsh/.zshenv $HOME # duplicate, copy anyway, ensures $ZDOTDIR copy_dir src_files/.config $XDG_CONFIG_HOME copy_dir src_files/.local/bin $DIR_BIN copy_dir src_files/.local/scripts $DIR_SCRIPTS # on macos, gimp defaults to app-support, so sym-link to actual config [[ "$BOX_SETUP_OS" = "macos" ]] && link_dir "$XDG_CONFIG_HOME/GIMP" "$HOME/Library/Application Support/GIMP" link_dir "$XDG_CONFIG_HOME/vim" "$HOME/.vim" # TODO: use vim wrapper or similar instead