79 lines
1.9 KiB
Bash
Executable File
79 lines
1.9 KiB
Bash
Executable File
#!/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 <<EOF
|
|
Usage: ./scripts/service.sh <command>
|
|
|
|
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
|