feat: add uninstall.sh with dry-run, --help, full cleanup; update install.sh + COMMUNITY_POST.md

This commit is contained in:
Bernd (Hermes Agent)
2026-05-05 21:07:11 +02:00
parent c4c1f344ce
commit a7db2942f6
3 changed files with 187 additions and 12 deletions
Executable
+121
View File
@@ -0,0 +1,121 @@
#!/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