Makefile 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. # ---------- ---------- ---------- ---------- ---------- ----------
  2. #
  3. # dotfiles
  4. #
  5. # ---------- ---------- ---------- ---------- ---------- ----------
  6. NEW_HOME=$$(pwd)/var
  7. target: help
  8. # ---------- FUNCTIONS ---------- ---------- ---------- ----------
  9. define diff_file
  10. @if [ -d $(1) ]; then\
  11. echo "going into directory...";\
  12. elif [ ! -f $(1) ]; then\
  13. echo "cannot find src $(1)";\
  14. elif [ ! -f $(2) ]; then\
  15. echo "cannot find dest $(2)";\
  16. else\
  17. diff --color=always $(1) $(2) || echo "WARNING: dirty: $(1) $(2)";\
  18. fi
  19. endef
  20. define cp_file
  21. @if [ -d $(1) ]; then\
  22. rsync -avh --delete $(1) $(2);\
  23. elif [ ! -f $(1) ]; then\
  24. echo "cannot find src $(1)";\
  25. else\
  26. mkdir -p $$(dirname $(2));\
  27. cp $(1) $(2);\
  28. fi
  29. endef
  30. define do_func
  31. @$(call $(1),./src/bash/.bash_aliases,$(2)/.bash_aliases)
  32. @$(call $(1),./src/bash/.bashrc,$(2)/.bashrc)
  33. @$(call $(1),./src/emacs/.emacs,$(2)/.emacs)
  34. @$(call $(1),./src/emacs/.emacs.d/opt/my-theme-file.el,$(2)/.emacs.d/opt/my-theme-file.el)
  35. @$(call $(1),./src/git/.gitignore_global,$(2)/.gitignore_global)
  36. @$(call $(1),./src/git/.gitconfig,$(2)/.gitconfig)
  37. @$(call $(1),./src/mutt/muttrc,$(2)/.mutt/muttrc)
  38. @$(call $(1),./src/mutt/mailcap,$(2)/.mutt/mailcap)
  39. @$(call $(1),./src/starship/config.toml,$(2)/.starship/config.toml)
  40. @$(call $(1),./src/vim/.vimrc,$(2)/.vimrc)
  41. endef
  42. # ---------- PHONIES -- ---------- ---------- ---------- ----------
  43. .PHONY: help
  44. help:
  45. @echo "Usage: make [PHONY]"
  46. @sed -n -e "/sed/! s/\.PHONY: //p" Makefile
  47. .PHONY: clean
  48. clean:
  49. @rm -rf ./var
  50. .PHONY: diffs
  51. diffs:
  52. @$(call do_func,diff_file,~)
  53. .PHONY: home
  54. home:
  55. @mkdir -p $(NEW_HOME)
  56. @$(call do_func,cp_file,$(NEW_HOME))
  57. @echo "Now run:"
  58. @echo " env -i \\"
  59. @echo " HOME=$(NEW_HOME) \\"
  60. @echo " DISPLAY=:0.0 \\"
  61. @echo " COLORTERM=truecolor \\"
  62. @echo " TERM=xterm-256color \\"
  63. @echo " bash"
  64. .PHONY: install
  65. install:
  66. @$(call do_func,cp_file,~)
  67. .PHONY: rehome
  68. rehome: clean home