#!/usr/bin/env bash # uninstall.sh # Rocket.Chat Plugin — Saubere Deinstallation von Hermes Agent # # Nutzung: # ./uninstall.sh → Deinstallieren # ./uninstall.sh --dry-run → Simulation (zeigt an, ändert nichts) set -uo pipefail DRY_RUN=false if [[ "${1:-}" == "--dry-run" ]]; then DRY_RUN=true echo -e "\n🔍 DRY-RUN — Es wird NICHTS entfernt. Nur Vorschau.\n" fi PLUGIN_NAME="rocketchat" HERMES_HOME="${HERMES_HOME:-$HOME/.hermes}" PLUGIN_DEST="$HERMES_HOME/hermes-agent/plugins/platforms/$PLUGIN_NAME" ENV_FILE="$HERMES_HOME/.env" ECHO_OK() { echo -e " ✅ $1"; } ECHO_ERR() { echo -e " ❌ $1"; } ECHO_INFO() { echo -e " ℹ️ $1"; } ECHO_STEP() { echo -e "\n🔵 $1"; } ECHO_WARN() { echo -e " ⚠️ $1"; } ECHO_DRY() { echo -e " 📝 [DRY-RUN] $1"; } run_or_simulate() { local desc="$1" shift if $DRY_RUN; then ECHO_DRY "$desc" echo " → würde ausführen: $*" else "$@" fi } # ── Schritt 1: Hermes Gateway stoppen ── ECHO_STEP "1/4 Hermes Gateway stoppen" if ! $DRY_RUN; then if command -v hermes &>/dev/null; then hermes gateway stop 2>/dev/null || true ECHO_OK "Gateway gestoppt" else ECHO_WARN "'hermes' nicht gefunden — Gateway manuell prüfen" fi else ECHO_DRY "würde 'hermes gateway stop' ausführen" fi # ── Schritt 2: Plugin-Dateien entfernen ── ECHO_STEP "2/4 Plugin-Dateien entfernen" if [[ -d "$PLUGIN_DEST" ]]; then FILE_COUNT=$(find "$PLUGIN_DEST" -type f 2>/dev/null | wc -l) ECHO_WARN "Gefunden: $PLUGIN_DEST ($FILE_COUNT Dateien)" if ! $DRY_RUN; then read -rp " Wirklich entfernen? [j/N] " ans if [[ "$ans" =~ ^[Jj]$ ]]; then rm -rf "$PLUGIN_DEST" ECHO_OK "Plugin-Verzeichnis entfernt" else echo "Abbruch." exit 0 fi else ECHO_DRY "würde rm -rf $PLUGIN_DEST ausführen ($FILE_COUNT Dateien)" fi else ECHO_INFO "Plugin-Verzeichnis nicht gefunden — überspringe" fi # ── Schritt 3: Env-Variablen bereinigen ── ECHO_STEP "3/4 Env-Variablen bereinigen" if [[ -f "$ENV_FILE" ]]; then RC_COUNT=$(grep -c "^ROCKETCHAT_" "$ENV_FILE" 2>/dev/null || echo "0") if [[ "$RC_COUNT" -gt 0 ]]; then if ! $DRY_RUN; then read -rp " $RC_COUNT ROCKETCHAT_-Zeilen aus ~/.hermes/.env entfernen? [j/N] " ans if [[ "$ans" =~ ^[Jj]$ ]]; then sed -i '/^ROCKETCHAT_/d' "$ENV_FILE" ECHO_OK "$RC_COUNT Einträge entfernt" else ECHO_INFO "Env-Einträge belassen" fi else ECHO_DRY "würde $RC_COUNT ROCKETCHAT_-Zeilen aus $ENV_FILE entfernen" fi else ECHO_INFO "Keine ROCKETCHAT_-Einträge in .env gefunden" fi else ECHO_INFO "~/.hermes/.env nicht vorhanden — überspringe" fi # ── Schritt 4: Config.yaml Hinweis ── ECHO_STEP "4/4 Config.yaml prüfen" CONFIG_FILE="$HERMES_HOME/config.yaml" if [[ -f "$CONFIG_FILE" ]] && grep -q "rocketchat:" "$CONFIG_FILE" 2>/dev/null; then ECHO_WARN "rocketchat:-Eintrag in config.yaml gefunden" echo " Bitte manuell entfernen, falls gewünscht:" echo " $ nano $CONFIG_FILE" else ECHO_INFO "Kein rocketchat:-Eintrag in config.yaml" fi # ── Fertig ── if $DRY_RUN; then ECHO_STEP "🔍 DRY-RUN BEENDET" ECHO_INFO "Es wurde NICHTS entfernt." ECHO_INFO "Starte ohne --dry-run für echte Deinstallation." else ECHO_STEP "✨ Deinstallation abgeschlossen" ECHO_OK "Plugin ist entfernt" ECHO_INFO "Zum erneuten Installieren: ./install.sh" fi