PROJECT := certificate-expire-check USER := $(PROJECT) INSTALL_DIR := /etc/$(PROJECT) CONF_DIR := $(INSTALL_DIR)/conf SCRIPT := $(INSTALL_DIR)/main.py CRON_SCHEDULE:= 0 0 */10 * * .PHONY: all user install cron clean all: user install cron user: @id -u $(USER) &>/dev/null || \ sudo useradd --system --no-create-home --shell /usr/sbin/nologin $(USER) && \ echo "User '$(USER)' has been created." @echo "User '$(USER)' already exists - skip it." # Copy the project to /etc and set permissions install: user sudo mkdir -p $(INSTALL_DIR) sudo cp -r ./* $(INSTALL_DIR) sudo chown -R $(USER):$(USER) $(INSTALL_DIR) @echo "The project is installed in $(INSTALL_DIR) and permissions are assigned to user '$(USER)'." # Add a cron job as a user cron: install @CRON_LINE="$(CRON_SCHEDULE) /usr/bin/python3 $(SCRIPT) >> /var/log/$(PROJECT).log 2>&1" # add CRON_LINE in user crontab if not exists @sudo crontab -u $(USER) -l 2>/dev/null | grep -F "$$CRON_LINE" >/dev/null || \ ( sudo crontab -u $(USER) -l 2>/dev/null; echo "$$CRON_LINE" ) | sudo crontab -u $(USER) - @echo "Cron entry for user '$(USER)' is set: $$CRON_LINE" clean: -sudo crontab -u $(USER) -r -sudo userdel $(USER) -sudo rm -rf $(INSTALL_DIR) @echo The cleanup is complete."