From f57913b709828027ef3435a83477fb038e5c7a0e Mon Sep 17 00:00:00 2001 From: Sam Scholten Date: Mon, 27 Oct 2025 07:52:15 +1000 Subject: Fix update.sh: properly replace service file placeholders - Fix update_services() to use sed like setup.sh does - Generate service files with correct ExecStart paths - Add RESTIC_ENV_FILE environment variable during update - This fixes the '/path/to/be/replaced' error in systemd services --- update.sh | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) (limited to 'update.sh') diff --git a/update.sh b/update.sh index c6e64c9..34231eb 100755 --- a/update.sh +++ b/update.sh @@ -83,21 +83,43 @@ update_scripts() { update_services() { local install_type="$1" local systemd_dir + local install_dir + local env_file if [ "$install_type" = "system" ]; then systemd_dir="/etc/systemd/system" + install_dir="/usr/local/bin" + env_file="/root/.restic_env" log "Updating systemd services and timers in $systemd_dir" - sudo cp systemd/restic-backup.service "$systemd_dir/" - sudo cp systemd/restic-check.service "$systemd_dir/" + + # Generate service files with correct paths (like setup.sh does) + sed -e "s|ExecStart=/path/to/be/replaced/restic_backup.sh|ExecStart=$install_dir/restic_backup.sh|" \ + -e "s|# Environment variable will be set by setup.sh based on scope|Environment=\"RESTIC_ENV_FILE=$env_file\"|" \ + systemd/restic-backup.service | sudo tee "$systemd_dir/restic-backup.service" >/dev/null + sed -e "s|ExecStart=/path/to/be/replaced/restic_check.sh|ExecStart=$install_dir/restic_check.sh|" \ + -e "s|# Environment variable will be set by setup.sh based on scope|Environment=\"RESTIC_ENV_FILE=$env_file\"|" \ + systemd/restic-check.service | sudo tee "$systemd_dir/restic-check.service" >/dev/null + + # Copy timer files directly sudo cp systemd/restic-backup.timer "$systemd_dir/" sudo cp systemd/restic-check.timer "$systemd_dir/" sudo systemctl daemon-reload else systemd_dir="$HOME/.config/systemd/user" + install_dir="$HOME/.local/bin" + env_file="$HOME/.config/restic/env" mkdir -p "$systemd_dir" log "Updating systemd services and timers in $systemd_dir" - cp systemd/restic-backup.service "$systemd_dir/" - cp systemd/restic-check.service "$systemd_dir/" + + # Generate service files with correct paths (like setup.sh does) + sed -e "s|ExecStart=/path/to/be/replaced/restic_backup.sh|ExecStart=$install_dir/restic_backup.sh|" \ + -e "s|# Environment variable will be set by setup.sh based on scope|Environment=\"RESTIC_ENV_FILE=$env_file\"|" \ + systemd/restic-backup.service >"$systemd_dir/restic-backup.service" + sed -e "s|ExecStart=/path/to/be/replaced/restic_check.sh|ExecStart=$install_dir/restic_check.sh|" \ + -e "s|# Environment variable will be set by setup.sh based on scope|Environment=\"RESTIC_ENV_FILE=$env_file\"|" \ + systemd/restic-check.service >"$systemd_dir/restic-check.service" + + # Copy timer files directly cp systemd/restic-backup.timer "$systemd_dir/" cp systemd/restic-check.timer "$systemd_dir/" systemctl --user daemon-reload -- cgit v1.2.3