diff --git a/Makefile b/Makefile index 8b7f2fe..610cd26 100644 --- a/Makefile +++ b/Makefile @@ -19,7 +19,7 @@ install-systemd install-cron \ install-targets-script install-targets-conf install-targets-systemd \ install-targets-cron install-targets-launchagent \ - install-targets-schedtask \ + install-targets-schedtask uninstall-targets-schedtask \ activate-launchagent deactivate-launchagent #### Macros ################################################################### @@ -34,6 +34,15 @@ else BAK_SUFFIX = -B .$(NOW).bak endif + +# Source: https://stackoverflow.com/a/14777895/265508 +ifeq ($(OS),Windows_NT) + CUR_OS := Windows +else + CUR_OS := $(shell uname) +endif + + # Create parent directories of a file, if not existing. # Reference: https://stackoverflow.com/a/25574592/265508 MKDIR_PARENTS=sh -c '\ @@ -70,7 +79,10 @@ SRCS_CONF = $(wildcard $(DIR_CONF)/*) SRCS_SYSTEMD = $(wildcard $(DIR_SYSTEMD)/*) SRCS_CRON = $(wildcard $(DIR_CRON)/*) SRCS_LAUNCHAGENT= $(wildcard $(DIR_LAUNCHAGENT)/*) -SRCS_SCHEDTASK = install_restic_scheduledtask.ps1 + +SCHEDTASK_INSTALL = schedtask_install.ps1 +SCHEDTASK_UNINSTALL = schedtask_uninstall.ps1 +SRCS_SCHEDTASK = $(SCHEDTASK_INSTALL) $(SCHEDTASK_UNINSTALL) # Local build directory. Sources will be copied here, # modified and then installed from this directory. @@ -119,7 +131,7 @@ clean: $(RM) -r $(BUILD_DIR) # target: uninstall - Uninstall ALL installed (including config) files. -uninstall: +uninstall: uninstall-schedtask @for file in $(INSTALLED_FILES); do \ echo $(RM) $$file; \ $(RM) $$file; \ @@ -140,10 +152,13 @@ install-cron: install-targets-script install-targets-conf install-targets-cron install-launchagent: install-targets-script install-targets-conf \ install-targets-launchagent -# target: install-schedtask - Install Windows ScheduledTask +# target: install-schedtask - Install Windows ScheduledTasks install-schedtask: install-targets-script install-targets-conf \ install-targets-schedtask +# target: uninstall-schedtask - Uninstall Windows ScheduledTasks +uninstall-schedtask: uninstall-targets-schedtask + # Install targets. Prereq build sources as well, # so that build dir is re-created if deleted. install-targets-script: $(DEST_TARGS_SCRIPT) $(BUILD_SRCS_SCRIPT) @@ -152,9 +167,12 @@ install-targets-systemd: $(DEST_TARGS_SYSTEMD) $(BUILD_SRCS_SYSTEMD) install-targets-cron: $(DEST_TARGS_CRON) $(BUILD_SRCS_CRON) install-targets-launchagent: $(DEST_TARGS_LAUNCHAGENT) \ $(BUILD_SRCS_LAUNCHAGENT) $(DEST_DIR_MAC_LOG) -install-targets-schedtask: $(BUILD_SRCS_SCHEDTASK) +install-targets-schedtask: $(BUILD_DIR)/$(SCHEDTASK_INSTALL) ./$< +uninstall-targets-schedtask: $(BUILD_DIR)/$(SCHEDTASK_UNINSTALL) + test $(CUR_OS) != Windows || ./$< + # Copies sources to build directory & replace "$INSTALL_PREFIX". $(BUILD_DIR)/% : % @${MKDIR_PARENTS} $@ diff --git a/install_restic_scheduledtask.ps1 b/schedtask_install.ps1 similarity index 70% rename from install_restic_scheduledtask.ps1 rename to schedtask_install.ps1 index b10fdf5..7db720e 100644 --- a/install_restic_scheduledtask.ps1 +++ b/schedtask_install.ps1 @@ -9,11 +9,11 @@ # Install restic_backup.sh -$action = New-ScheduledTaskAction -Execute 'C:\Program Files\Git\git-bash.exe' -Argument '-l -c "source $INSTALL_PREFIX/etc/restic/default.env.sh && $INSTALL_PREFIX/bin/restic_backup.sh"' +$action = New-ScheduledTaskAction -Execute "$(scoop prefix git)\git-bash.exe" -Argument '-l -c "source $INSTALL_PREFIX/etc/restic/default.env.sh && $INSTALL_PREFIX/bin/restic_backup.sh"' $trigger = New-ScheduledTaskTrigger -Daily -At 7pm Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "restic_backup" -Description "Daily backup to B2 with restic." # Install restic_check.sh -$action = New-ScheduledTaskAction -Execute 'C:\Program Files\Git\git-bash.exe' -Argument '-l -c "source $INSTALL_PREFIX/etc/restic/default.env.sh && /INSTALL_PREFIX/bin/restic_check.sh"' +$action = New-ScheduledTaskAction -Execute "$(scoop prefix git)\git-bash.exe" -Argument '-l -c "source $INSTALL_PREFIX/etc/restic/default.env.sh && /INSTALL_PREFIX/bin/restic_check.sh"' $trigger = New-ScheduledTaskTrigger -Weekly -WeeksInterval 4 -DaysOfWeek Sunday -At 8pm -RandomDelay 128 Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "restic_check" -Description "Check B2 backups with restic." diff --git a/schedtask_uninstall.ps1 b/schedtask_uninstall.ps1 new file mode 100644 index 0000000..07a7a73 --- /dev/null +++ b/schedtask_uninstall.ps1 @@ -0,0 +1,5 @@ +#!/usr/bin/env pwsh +# Uninstall restic scheduled tasks. + +Unregister-ScheduledTask -TaskName "restic_backup" -Confirm:$false +Unregister-ScheduledTask -TaskName "restic_check" -Confirm:$false