diff --git a/install.sh b/install.sh index 9652ca9..2657ece 100755 --- a/install.sh +++ b/install.sh @@ -1,16 +1,15 @@ #!/usr/bin/env bash -# Install we_monitor as a systemd user service. +# Install or update we_monitor as a systemd user service. # -# What this script does: -# 1. Creates ~/.config/we_monitor/ and a credentials template if missing -# 2. Writes a systemd user service unit -# 3. Enables the service (does not start it — edit credentials first) -# -# Usage: +# Fresh install: # chmod +x install.sh # ./install.sh # # then edit ~/.config/we_monitor/credentials.json # systemctl --user start we_monitor +# +# Update (code already pulled via git): +# ./install.sh +# (restarts the service automatically if it was running) set -euo pipefail @@ -25,7 +24,21 @@ LOG_DIR="$SCRIPT_DIR/logs" VENV="$SCRIPT_DIR/.venv" PYTHON="$VENV/bin/python" -echo "==> we_monitor installer" +# detect fresh install vs update +IS_UPDATE=false +WAS_ACTIVE=false +if systemctl --user is-enabled "$SERVICE_NAME" &>/dev/null; then + IS_UPDATE=true + if systemctl --user is-active "$SERVICE_NAME" &>/dev/null; then + WAS_ACTIVE=true + fi +fi + +if $IS_UPDATE; then + echo "==> we_monitor updater" +else + echo "==> we_monitor installer" +fi echo " Project : $SCRIPT_DIR" echo " User : $USER" echo "" @@ -40,11 +53,11 @@ fi echo "==> Installing / updating dependencies" "$VENV/bin/pip" install --quiet --upgrade pip -"$VENV/bin/pip" install --quiet -r "$SCRIPT_DIR/requirements.txt" +"$VENV/bin/pip" install --quiet --upgrade -r "$SCRIPT_DIR/requirements.txt" echo " Python : $PYTHON" echo "" -# ── 2. credentials template ─────────────────────────────────────────────────── +# ── 2. credentials template (only on fresh install) ─────────────────────────── mkdir -p "$CREDS_DIR" chmod 700 "$CREDS_DIR" @@ -108,24 +121,37 @@ else echo " Run as root to fix: loginctl enable-linger $USER" fi -# ── 6. reload and enable (but do NOT start yet) ─────────────────────────────── +# ── 6. reload systemd and enable / restart ──────────────────────────────────── systemctl --user daemon-reload systemctl --user enable "$SERVICE_NAME" +if $WAS_ACTIVE; then + systemctl --user restart "$SERVICE_NAME" + echo "==> Service restarted" +fi + echo "" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" -echo " Installation complete." +if $IS_UPDATE; then + echo " Update complete." + echo "" + if $WAS_ACTIVE; then + echo " Service was restarted automatically." + else + echo " Service was not running — start it manually if needed:" + echo " systemctl --user start $SERVICE_NAME" + fi +else + echo " Installation complete." + echo "" + echo " Next steps:" + echo " 1. Edit credentials (username, password, vin, interval_s, …):" + echo " \$EDITOR $CREDS_FILE" + echo "" + echo " 2. Start the service:" + echo " systemctl --user start $SERVICE_NAME" +fi echo "" -echo " Next steps:" -echo " 1. Edit credentials (username, password, vin, interval_s, …):" -echo " \$EDITOR $CREDS_FILE" -echo "" -echo " 2. Start the service:" -echo " systemctl --user start $SERVICE_NAME" -echo "" -echo " 3. Check status:" -echo " systemctl --user status $SERVICE_NAME" -echo "" -echo " 4. Follow logs:" -echo " journalctl --user -u $SERVICE_NAME -f" +echo " Check status : systemctl --user status $SERVICE_NAME" +echo " Follow logs : journalctl --user -u $SERVICE_NAME -f" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" \ No newline at end of file