Makefile 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. # ---------- ---------- ---------- ---------- ---------- ----------
  2. #
  3. # op(eration)s Makefile
  4. #
  5. # 1) config, vars, and target
  6. # 2) functions
  7. # 3) phonies
  8. #
  9. # ---------- ---------- ---------- ---------- ---------- ----------
  10. TMP_HOME=/tmp/ops/home
  11. TMP_BACKUP=/tmp/ops/backup
  12. HOME_DIR=$(if $(h),$(h),$(TMP_HOME))
  13. BACKUP_DIR=$(if $(b),$(b),$(TMP_BACKUP))
  14. target: help
  15. # ---------- ---------- ---------- ---------- ---------- ----------
  16. # functions
  17. # ---------- ---------- ---------- ---------- ---------- ----------
  18. define dry_run_sync_files
  19. @. ./src/backup.sh && sync_files $(1)/$(3) $(2) dry_run
  20. endef
  21. define sync_files
  22. @. ./src/backup.sh && sync_files $(1)/$(3) $(2)
  23. endef
  24. define do_func
  25. @$(call $(1),$(2),$(3),.gnupg)
  26. @$(call $(1),$(2),$(3),.irssi)
  27. @$(call $(1),$(2),$(3),.mutt)
  28. @$(call $(1),$(2),$(3),.password-store)
  29. @$(call $(1),$(2),$(3),.ssh)
  30. @$(call $(1),$(2),$(3),Documents)
  31. @$(call $(1),$(2),$(3),.bash_aliases_pvt)
  32. @$(call $(1),$(2),$(3),.mbsyncrc)
  33. endef
  34. # ---------- ---------- ---------- ---------- ---------- ----------
  35. # phonies
  36. # ---------- ---------- ---------- ---------- ---------- ----------
  37. .PHONY: help
  38. help:
  39. @echo "Usage: make [PHONY] [OPTIONS]"
  40. @echo "PHONY:"
  41. @sed -n -e "/sed/! s/\.PHONY: / /p" Makefile
  42. @echo "OPTIONS:"
  43. @echo " h"
  44. @echo " Set the home directory location."
  45. @echo " b"
  46. @echo " Set the backup directory location."
  47. @. ./src/packages.sh && check_additional_packages
  48. .PHONY: dry-run-backup
  49. dry-run-backup:
  50. @$(call do_func,dry_run_sync_files,$(HOME_DIR),$(BACKUP_DIR))
  51. .PHONY: dry-run-restore
  52. dry-run-restore:
  53. @$(call do_func,dry_run_sync_files,$(BACKUP_DIR),$(HOME_DIR))
  54. .PHONY: backup
  55. backup:
  56. @$(call do_func,sync_files,$(HOME_DIR),$(BACKUP_DIR))
  57. .PHONY: backup-to-tmp
  58. backup-to-tmp:
  59. @mkdir -p $(TMP_HOME) $(TMP_BACKUP)
  60. @$(call do_func,sync_files,~,$(TMP_HOME))
  61. @$(call do_func,sync_files,$(TMP_HOME),$(TMP_BACKUP))
  62. @diff -r $(TMP_HOME) $(TMP_BACKUP)
  63. .PHONY: configure
  64. configure:
  65. @. ./src/manage_keys.sh && import_gnupg && set_permissions
  66. .PHONY: install
  67. install: install-min
  68. @. ./src/packages.sh && install_apt_packages_mailco
  69. @. ./src/packages.sh && install_apt_packages_gui
  70. .PHONY: install-min
  71. install-min:
  72. @. ./src/packages.sh && install_apt_packages
  73. .PHONY: lint
  74. lint:
  75. @shellcheck -s bash ./src/*
  76. .PHONY: restore
  77. restore:
  78. @$(call do_func,sync_files,$(BACKUP_DIR),$(HOME_DIR))