-.PHONY: install update
+APATH := $(realpath .)
+RPATH := $(subst $(wildcard ~/),,$(APATH))
-install:
- cp -f bashrc ~/.bashrc
- cp -f bash_aliases ~/.bash_aliases
- cp -f bash_colors ~/.bash_colors
- cp -f bash_logout ~/.bash_logout
- cp -f flexget/config.yml ~/.flexget/config.yml
- cp -f vimrc ~/.vimrc
+FILES := bin
+DOTFILES := aliasesrc bash* flexget vim* zsh*
-update:
- cp -f ~/.bashrc bashrc
- cp -f ~/.bash_aliases bash_aliases
- cp -f ~/.bash_colors bash_colors
- cp -f ~/.bash_logout bash_logout
- cp -f ~/.flexget/config.yml flexget/config.yml
- cp -f ~/.vimrc vimrc
+.PHONY: install $(FILES) $(DOTFILES)
+install: $(FILES) $(DOTFILES)
+
+$(FILES):
+ @if [[ -e ~/$@ && ! -L ~/$@ ]]; then \
+ if [[ -d $@ ]]; then \
+ cp -r ~/$@/* $@; \
+ else \
+ cp -r ~/$@ $@; \
+ fi; \
+ rm -r ~/$@; \
+ fi;
+ ln -sfT $(RPATH)/$@ ~/$@
+
+$(DOTFILES):
+ @if [[ -e ~/.$@ && ! -L ~/.$@ ]]; then \
+ if [[ -d .$@ ]]; then \
+ cp -r ~/.$@/* $@; \
+ else \
+ cp -r ~/.$@ $@; \
+ fi; \
+ rm -r ~/.$@; \
+ fi;
+ ln -sfT $(RPATH)/$@ ~/.$@