#!/usr/bin/env bash set -euo pipefail SERVICE_NAME="BackItUp.service" PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" USER_SYSTEMD_DIR="${HOME}/.config/systemd/user" TARGET_SERVICE_FILE="${USER_SYSTEMD_DIR}/${SERVICE_NAME}" SOURCE_SERVICE_FILE="${PROJECT_DIR}/deploy/systemd/${SERVICE_NAME}" usage() { cat < Commands: install Install service for current user and reload daemon start Start service stop Stop service restart Restart service status Show service status logs Follow service logs enable Enable autostart on login disable Disable autostart on login EOF } ensure_venv() { if [[ ! -x "${PROJECT_DIR}/.venv/bin/python" ]]; then echo "[INFO] Erzeuge .venv..." python3 -m venv "${PROJECT_DIR}/.venv" fi echo "[INFO] Installiere/aktualisiere Abhaengigkeiten..." "${PROJECT_DIR}/.venv/bin/python" -m pip install -r "${PROJECT_DIR}/requirements.txt" } install_service() { mkdir -p "${USER_SYSTEMD_DIR}" cp "${SOURCE_SERVICE_FILE}" "${TARGET_SERVICE_FILE}" systemctl --user daemon-reload echo "[OK] Service installiert: ${TARGET_SERVICE_FILE}" } case "${1:-}" in install) ensure_venv install_service ;; start) systemctl --user start "${SERVICE_NAME}" echo "[OK] Service gestartet" ;; stop) systemctl --user stop "${SERVICE_NAME}" echo "[OK] Service gestoppt" ;; restart) systemctl --user restart "${SERVICE_NAME}" echo "[OK] Service neugestartet" ;; status) systemctl --user status "${SERVICE_NAME}" --no-pager ;; logs) journalctl --user -u "${SERVICE_NAME}" -f ;; enable) systemctl --user enable "${SERVICE_NAME}" echo "[OK] Autostart aktiviert" ;; disable) systemctl --user disable "${SERVICE_NAME}" echo "[OK] Autostart deaktiviert" ;; *) usage exit 1 ;; esac