Makefile 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. # lcmail-wizard
  2. # =============
  3. # Setup procmail filters and lcmail-wizard.py script
  4. # See README.md for more information
  5. # --------------------------------------------------
  6. # destination
  7. # -----------
  8. FORWARD = ${HOME}/.forward
  9. PMAILRC = ${HOME}/.procmailrc
  10. PMAILDIR = ${HOME}/.procmail
  11. # shell env
  12. # ---------
  13. HOSTNAME = $(shell hostname)
  14. HOME = $(shell echo ~)
  15. PWD = $(shell pwd)
  16. all:
  17. @echo "lcmail-wizard is a python script + config, so there is nothing to do."
  18. @echo "Try \"make install\" instead."
  19. init: filter-rules.rc lcmail-wizard.yml lcmail-wizard.cron
  20. @echo "[INFO] Customize, if you want:"
  21. @echo " * filter-rules.rc -> Mail filter rules"
  22. @echo " * lcmail-wizard.yml -> Mail auto trash days"
  23. @echo " * lcmail-wizard.cron -> Mail auto trash scheduler"
  24. filter-rules.rc:
  25. @echo "[INFO] Create $@ from filter-rules.def.rc"
  26. @cp filter-rules.def.rc $@
  27. lcmail-wizard.yml:
  28. @echo "[INFO] Create $@ from lcmail-wizard.def.yml"
  29. @cp lcmail-wizard.def.yml $@
  30. lcmail-wizard.cron:
  31. @echo "[INFO] Create $@ from lcmail-wizard.def.cron"
  32. @head -n5 lcmail-wizard.def.cron > lcmail-wizard.cron
  33. @printf '\nDEST="%s"\n\n' "${PWD}" >> lcmail-wizard.cron
  34. @tail -n2 lcmail-wizard.def.cron >> lcmail-wizard.cron
  35. install: init config schedule
  36. config:
  37. @echo "[INFO] Create configuration"
  38. @echo "[INFO] Create lcmail-wizard.py log dir"
  39. @mkdir -p log
  40. @echo "[INFO] Create .maildir structure using lcmail-wizard.py"
  41. @./lcmail-wizard.py --create
  42. @echo "[INFO] Backup ${PMAILRC} file, if present"
  43. @if [ -f "${PMAILRC}" ]; then mv -f "${PMAILRC}" "${PMAILRC}.orig" 2> /dev/null; fi
  44. @echo "[INFO] Backup ${PMAILDIR} file, if present"
  45. @if [ -d "${PMAILDIR}" ]; then mv -f "${PMAILDIR}" "${PMAILDIR}.orig" 2> /dev/null; fi
  46. @echo "[INFO] Create ${PMAILDIR} structure"
  47. @mkdir -p "${PMAILDIR}/log"
  48. @echo "[INFO] Copy procmail configuration files"
  49. @cp .procmailrc "${PMAILRC}"
  50. @cp filter-rules.rc "${PMAILDIR}/"
  51. @echo "[INFO] Backup ${FORWARD} file"
  52. @cp -a "${FORWARD}" "${FORWARD}.orig"
  53. @echo "[INFO] Enable procmail, rewriting ${FORWARD}"
  54. @cp .forward "${FORWARD}"
  55. @chmod 0644 "${FORWARD}"
  56. schedule:
  57. @echo "[INFO] Schedule lcmail-wizard.py using crontab"
  58. @if [ -f "lcmail-wizard.cron.lock" ]; then \
  59. echo "[WARN] Already scheduled on $(shell cat "lcmail-wizard.cron.lock" 2> /dev/null)"; \
  60. echo "[INFO] Here its content"; \
  61. ssh $(shell cat "lcmail-wizard.cron.lock" 2> /dev/null) 'crontab -l'; \
  62. else \
  63. echo "[INFO] Scheduled on ${HOSTNAME}"; \
  64. echo "${HOSTNAME}" >> "lcmail-wizard.cron.lock"; \
  65. crontab "lcmail-wizard.cron"; \
  66. fi
  67. reconfig:
  68. @echo "[INFO] Apply new configurations"
  69. @echo "[INFO] Create .maildir structure using lcmail-wizard.py"
  70. @./lcmail-wizard.py --create
  71. @echo "[INFO] Copy procmail configuration files"
  72. @mv -f "${PMAILDIR}/filter-rules.rc" "${PMAILDIR}/filter-rules.rc.bk" 2> /dev/null
  73. @cp filter-rules.rc "${PMAILDIR}/"
  74. uninstall: unschedule
  75. @echo "[INFO] Remove configuration"
  76. @echo "[INFO] Restore original ${FORWARD}"
  77. @cp -af "${FORWARD}.orig" "${FORWARD}"
  78. @rm -f "${FORWARD}.orig"
  79. @echo "[INFO] Remove procmail conf files"
  80. @rm -rf "${PMAILDIR}"
  81. @rm -f "${PMAILRC}"
  82. @echo "[INFO] Restore original ${PMAILRC}, if present"
  83. @if [ -f "${PMAILRC}.orig" ]; then mv -f "${PMAILRC}.orig" "${PMAILRC}" 2> /dev/null; fi
  84. @echo "[INFO] Restore original ${PMAILDIR}, if present"
  85. @if [ -d "${PMAILDIR}.orig" ]; then mv -f "${PMAILDIR}.orig" "${PMAILDIR}" 2> /dev/null; fi
  86. @echo "[WARN] Structure inside ~/.maildir not restored,"
  87. @echo "added dirs must be manually remove."
  88. unschedule:
  89. @echo "[INFO] Unschedule lcmail-wizard.py using crontab"
  90. @if [ -f "lcmail-wizard.cron.lock" ]; then \
  91. echo "[INFO] Disable lcmail-wizard.py schedule on $(shell cat "lcmail-wizard.cron.lock" 2> /dev/null)"; \
  92. echo "[INFO] Here its content"; \
  93. ssh $(shell cat "lcmail-wizard.cron.lock" 2> /dev/null) 'crontab -l'; \
  94. echo "[INFO] Remove it"; \
  95. ssh $(shell cat "lcmail-wizard.cron.lock" 2> /dev/null) 'crontab -r'; \
  96. rm -f lcmail-wizard.cron.lock; \
  97. else \
  98. echo "[WARN] None or empty cron.lock file found, proceed manually"; \
  99. fi
  100. clean:
  101. @echo "[INFO] Remove custom config files"
  102. @rm -f filter-rules.rc lcmail-wizard.yml lcmail-wizard.cron lcmail-wizard.cron.lock
  103. .PHONY: init filter-rules.rc lcmail-wizard.yml lcmail-wizard.cron install config schedule reconfig uninstall unschedule clean