Files

122 lines
3.6 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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