5 Commits

4 changed files with 527 additions and 40 deletions
+41 -13
View File
@@ -37,24 +37,52 @@ Statt über ein separates Gateway-Binary zu kommunizieren, spricht Hermes Agent
- Laufender Rocket.Chat-Server (v5+ empfohlen) - Laufender Rocket.Chat-Server (v5+ empfohlen)
- Bot-Benutzer auf Rocket.Chat mit Login-Daten - Bot-Benutzer auf Rocket.Chat mit Login-Daten
### 2. Plugin installieren ### 2. Plugin herunterladen
```bash ```bash
# In das Hermes Agent Verzeichnis wechseln git clone https://gitea.thomander.de/andreas/Hermes_rocket.chat_Plugin.git
cd ~/.hermes/hermes-agent cd Hermes_rocket.chat_Plugin
# Plugin-Verzeichnis anlegen und Dateien hineinkopieren
mkdir -p plugins/platforms/rocketchat
cp plugin.yaml plugins/platforms/rocketchat/
cp __init__.py plugins/platforms/rocketchat/
cp adapter.py plugins/platforms/rocketchat/
``` ```
### 3. Konfigurieren ### 3. Interaktive Installation (empfohlen)
**Variante A — Umgebungsvariablen:**
```bash ```bash
./install.sh
```
Das Script führt dich durch alle Schritte, fragt deine Zugangsdaten ab, testet die Verbindung und schreibt die Konfiguration. Fertig in unter 2 Minuten.
**Nicht sicher?** Probiere erst die Simulation:
```bash
./install.sh --dry-run
```
Zeigt alles an, ändert nichts.
**Hilfe anzeigen:**
```bash
./install.sh --help
```
### 4. Manuelles Setup (für Experten)
Wer lieber per Hand konfigurieren möchte:
```bash
mkdir -p ~/.hermes/hermes-agent/plugins/platforms/rocketchat
cp plugin.yaml __init__.py adapter.py \
~/.hermes/hermes-agent/plugins/platforms/rocketchat/
```
Dann `~/.hermes/.env` oder `config.yaml` bearbeiten.
### 5. Konfigurieren
Falls du manuell konfigurierst, hier die zwei Varianten:
**Variante A — Umgebungsvariablen:**
export ROCKETCHAT_BASE_URL="https://rocketchat.example.com" export ROCKETCHAT_BASE_URL="https://rocketchat.example.com"
export ROCKETCHAT_USER="bernd" export ROCKETCHAT_USER="bernd"
export ROCKETCHAT_PASSWORD="dein-passwort" export ROCKETCHAT_PASSWORD="dein-passwort"
@@ -156,7 +184,7 @@ Kein Build-Step, keine Node-Dependencies, kein Docker nötig.
- **Hermes Agent**: https://hermes-agent.nousresearch.com/ - **Hermes Agent**: https://hermes-agent.nousresearch.com/
- **Rocket.Chat**: https://www.rocket.chat/ - **Rocket.Chat**: https://www.rocket.chat/
- **Dieses Repo**: `http://localhost:3000/andreas/Hermes_rocket.chat_Plugin` *(Gitea-Instanz)* - **Dieses Repo**: `https://gitea.thomander.de/andreas/Hermes_rocket.chat_Plugin`
--- ---
+93 -27
View File
@@ -1,36 +1,67 @@
# Hermes_rocket.chat_Plugin # Hermes_rocket.chat_Plugin
> Nützliches Add-on für [Hermes Agent](https://hermes-agent.nousresearch.com/)> um Rocket.Chat als Messaging-Plattform zu nutzen. > Nützliches Add-on für [Hermes Agent](https://hermes-agent.nousresearch.com/)
> um Rocket.Chat als Messaging-Plattform zu nutzen.
Stellt einen nativen Chatclient für das Hermes Agent Gateway bereit — mit Echtzeit-Nachrichten via WebSocket/DDP und REST-API für ausgehende Antworten. Stellt einen nativen Chatclient für das Hermes Agent Gateway bereit — mit Echtzeit-Nachrichten via WebSocket/DDP und REST-API für ausgehende Antworten.
## Features ---
- **Echtzeit-Streaming**: WebSocket/DDP für sofortige eingehende Nachrichten ## Schnellstart (für Neulinge)
- **Präsenz-Status**: Grüner Online-Indikator im Rocket.Chat
- **Markdown-Support**: Fett, kursiv, Inline-Code, Code-Blöcke, Links
- **Interaktive Buttons**: Ja/Nein, Bestätigen/Abbrechen, Mehrfachauswahl
- **Raum-Unterstützung**: Kanäle, private Gruppen, Direktnachrichten
- **Allowlist**: Steuerung, wer den Bot nutzen darf
## Installation ### 1. Voraussetzungen
```bash ```bash
# In dein Hermes Agent Verzeichnis wechseln sudo apt update && sudo apt install -y curl git python3 bash
cd ~/.hermes/hermes-agent
# Plugin-Verzeichnis anlegen
mkdir -p plugins/platforms/rocketchat
# Diese drei Dateien hineinkopieren:
cp plugin.yaml plugins/platforms/rocketchat/
cp __init__.py plugins/platforms/rocketchat/
cp adapter.py plugins/platforms/rocketchat/
``` ```
## Konfiguration ### 2. Plugin herunterladen
### Über Umgebungsvariablen ```bash
cd /tmp
git clone https://gitea.thomander.de/andreas/Hermes_rocket.chat_Plugin.git
cd Hermes_rocket.chat_Plugin
```
### 3. Installation starten
```bash
./install.sh
```
Falls du erst testen möchtest, was passieren würde:
```bash
./install.sh --dry-run
```
Das Script führt dich Schritt für Schritt durch:
- 🔵 Prüfe Voraussetzungen (curl, git, python3)
- 🔵 Erstelle Plugin-Verzeichnis
- 🔵 Kopiere alle Dateien
- 🔵 Frage deine Rocket.Chat-Daten ab
- 🔵 Teste die Verbindung
- 🔵 Schreibe Konfiguration in `~/.hermes/.env`
Am Ende ist das Plugin einsatzbereit — einfach `hermes gateway start`.
---
## Manuelle Installation (Experten)
Wer das Setup lieber von Hand macht:
```bash
# Plugin-Verzeichnis anlegen
mkdir -p ~/.hermes/hermes-agent/plugins/platforms/rocketchat
# Dateien hineinkopieren
cp plugin.yaml ~/.hermes/hermes-agent/plugins/platforms/rocketchat/
cp __init__.py ~/.hermes/hermes-agent/plugins/platforms/rocketchat/
cp adapter.py ~/.hermes/hermes-agent/plugins/platforms/rocketchat/
```
### Konfiguration über Umgebungsvariablen
```bash ```bash
export ROCKETCHAT_BASE_URL="https://rocketchat.example.com" export ROCKETCHAT_BASE_URL="https://rocketchat.example.com"
@@ -41,7 +72,7 @@ export ROCKETCHAT_ALLOWED_USERS="andreas,max" # optional
export ROCKETCHAT_ALLOW_ALL_USERS="false" # default export ROCKETCHAT_ALLOW_ALL_USERS="false" # default
``` ```
### Über `config.yaml` ### Konfiguration über `config.yaml`
```yaml ```yaml
plugins: plugins:
@@ -51,14 +82,49 @@ plugins:
base_url: "https://rocketchat.example.com" base_url: "https://rocketchat.example.com"
user: "bernd" user: "bernd"
password: "dein-passwort" password: "dein-passwort"
room_id: "J3jvMyrKTMzKvKHSh" # optional room_id: "J3jvMyrKTMzKvKHSh"
allowed_users: ["andreas", "max"] # optional allowed_users: ["andreas", "max"]
allow_all_users: false # default allow_all_users: false
``` ```
## Abhängigkeiten ---
Keine externen Pakete erforderlich — nutzt ausschließlich Python-Standardbibliothek (`urllib`, `socket`, `ssl`, `threading`). ## Features
| Feature | Beschreibung |
|---------|-------------|
| 🚀 Echtzeit-Streaming | DDP/WebSocket für sofortige eingehende Nachrichten |
| 🟢 Präsenz | Grüner Online-Status im Rocket.Chat |
| ✍️ Markdown | Fett, kursiv, `Code`, Blöcke, Links |
| 🔘 Interaktive Buttons | Ja/Nein, Bestätigen/Abbrechen, Mehrfachauswahl |
| 📢 Räume | Kanäle, private Gruppen, Direktnachrichten |
| 🔒 Allowlist | Steuerung, wer den Bot nutzen darf |
| 📦 Zero-Dependency | Nur Python-Standardbibliothek |
---
## Was ist im Paket?
```
Hermes_rocket.chat_Plugin/
├── install.sh ← Interaktives Setup für neue Benutzer
├── README.md ← Diese Datei
├── COMMUNITY_POST.md ← Fertige Vorlage für Foren/Reddit
├── plugin.yaml ← Plugin-Metadaten
├── __init__.py ← Plugin-Einstieg, Button-Templates
├── adapter.py ← DDP/WebSocket + REST Adapter
└── LICENSE ← Unlicense (Public Domain)
```
---
## Hilfe & Support
- **Hermes Agent Docs**: https://hermes-agent.nousresearch.com/
- **Rocket.Chat**: https://www.rocket.chat/
- **Dieses Repo**: https://gitea.thomander.de/andreas/Hermes_rocket.chat_Plugin
---
## Lizenz ## Lizenz
Executable
+272
View File
@@ -0,0 +1,272 @@
#!/usr/bin/env bash
# install.sh
# Rocket.Chat Plugin für Hermes Agent — Interaktives Setup
# Voraussetzungen: bash, curl, git, python3
#
# Nutzung:
# ./install.sh → Normale Installation
# ./install.sh --dry-run → Simulation (zeigt alles an, ändert nichts)
# ./install.sh --help → Diese Hilfe anzeigen
set -euo pipefail
# ── Hilfe ──
if [[ "${1:-}" == "--help" || "${1:-}" == "-h" ]]; then
cat <<'EOF'
Rocket.Chat Plugin — Interaktives Setup für Hermes Agent
Nutzung:
./install.sh Interaktive Installation mit Verbindungstest
./install.sh --dry-run Vorschau: zeigt alle Schritte an, ändert NICHTS
./install.sh --help Diese Hilfe anzeigen
Was install.sh macht:
1. Prüft Voraussetzungen (curl, git, python3)
2. Legt das Plugin-Verzeichnis an
3. Kopiert plugin.yaml, __init__.py, adapter.py
4. Fragt Rocket.Chat-Zugangsdaten interaktiv ab
5. Testet die Verbindung und liest UserID/RoomID aus
6. Schreibt die Konfiguration in ~/.hermes/.env
7. Bietet Neustart von Hermes Gateway an
Deinstallation: ./uninstall.sh
EOF
exit 0
fi
# ── Dry-Run Modus ──
DRY_RUN=false
if [[ "${1:-}" == "--dry-run" ]]; then
DRY_RUN=true
echo -e "\n🔍 DRY-RUN MODUS — Es wird NICHTS verändert. Nur Vorschau.\n"
fi
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PLUGIN_NAME="rocketchat"
HERMES_HOME="${HERMES_HOME:-$HOME/.hermes}"
PLUGIN_DEST="$HERMES_HOME/hermes-agent/plugins/platforms/$PLUGIN_NAME"
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: Prerequisites ──
ECHO_STEP "1/7 Prüfe Voraussetzungen"
MISSING=""
for cmd in curl git python3; do
if command -v "$cmd" &>/dev/null; then
ECHO_OK "$cmd installiert"
else
ECHO_ERR "$cmd fehlt"
MISSING="$MISSING $cmd"
fi
done
if [[ -n "$MISSING" ]]; then
ECHO_WARN "Folgende Pakete müssen nachinstalliert werden:"
echo " sudo apt update && sudo apt install -y$MISSING"
if ! $DRY_RUN; then
read -rp " Pakete jetzt installieren? [j/N] " ans
if [[ "$ans" =~ ^[Jj]$ ]]; then
sudo apt update && sudo apt install -y $MISSING
else
echo "Abbruch. Bitte installiere:$MISSING"
exit 1
fi
else
ECHO_DRY "würde fragen: Pakete jetzt installieren?"
fi
fi
# ── Schritt 2: Zielverzeichnis anlegen ──
ECHO_STEP "2/7 Erstelle Plugin-Verzeichnis"
if [[ -d "$PLUGIN_DEST" ]]; then
ECHO_WARN "Verzeichnis existiert bereits: $PLUGIN_DEST"
if ! $DRY_RUN; then
read -rp " Überschreiben? [j/N] " ans
if [[ "$ans" =~ ^[Jj]$ ]]; then
rm -rf "$PLUGIN_DEST"
else
echo "Abbruch."
exit 1
fi
else
ECHO_DRY "würde fragen: Verzeichnis überschreiben?"
fi
fi
run_or_simulate "Verzeichnis anlegen: $PLUGIN_DEST" mkdir -p "$PLUGIN_DEST"
$DRY_RUN || ECHO_OK "Verzeichnis angelegt: $PLUGIN_DEST"
# ── Schritt 3: Dateien kopieren ──
ECHO_STEP "3/7 Kopiere Plugin-Dateien"
for f in plugin.yaml __init__.py adapter.py; do
if [[ -f "$SCRIPT_DIR/$f" ]]; then
run_or_simulate "$f$PLUGIN_DEST/$f" cp "$SCRIPT_DIR/$f" "$PLUGIN_DEST/"
$DRY_RUN || ECHO_OK "$f kopiert"
else
ECHO_ERR "$f nicht im aktuellen Verzeichnis gefunden"
exit 1
fi
done
# ── Schritt 4: Konfiguration erfragen ──
ECHO_STEP "4/7 Konfiguration"
if $DRY_RUN; then
echo " [DRY-RUN] Beispielwerte werden verwendet"
RC_URL="https://chat.example.com"
RC_USER="bernd"
RC_PASS="geheim"
RC_ROOM="#ki-assistent"
ECHO_DRY "URL = $RC_URL"
ECHO_DRY "User = $RC_USER"
ECHO_DRY "Raum = $RC_ROOM"
else
read -rp " Rocket.Chat Basis-URL (z.B. https://chat.example.com): " RC_URL
[[ -z "$RC_URL" ]] && { ECHO_ERR "URL darf nicht leer sein"; exit 1; }
read -rp " Rocket.Chat Benutzername: " RC_USER
[[ -z "$RC_USER" ]] && { ECHO_ERR "Benutzername darf nicht leer sein"; exit 1; }
read -rsp " Rocket.Chat Passwort: " RC_PASS
echo
[[ -z "$RC_PASS" ]] && { ECHO_ERR "Passwort darf nicht leer sein"; exit 1; }
read -rp " Standard-Raumname (z.B. #ki-assistent) [optional]: " RC_ROOM
fi
# ── Schritt 5: Verbindungstest ──
ECHO_STEP "5/7 Teste Verbindung zu Rocket.Chat"
LOGIN_RESP=$(curl -s -H "Content-Type: application/json" \
-d "{\"user\":\"$RC_USER\",\"password\":\"$RC_PASS\"}" \
"${RC_URL%/}/api/v1/login" 2>/dev/null) || true
if [[ -z "$LOGIN_RESP" ]] || ! echo "$LOGIN_RESP" | grep -q '"status":"success"'; then
ECHO_ERR "Login fehlgeschlagen"
echo " URL : $RC_URL"
echo " User: $RC_USER"
if ! $DRY_RUN; then
read -rp " Parameter bearbeiten? [j/N] " ans
if [[ "$ans" =~ ^[Jj]$ ]]; then
exec "$0"
fi
else
ECHO_DRY "würde fragen: Parameter bearbeiten?"
fi
exit 1
fi
AUTH_TOKEN=$(echo "$LOGIN_RESP" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d['data']['authToken'])")
USER_ID=$(echo "$LOGIN_RESP" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d['data']['userId'])")
ECHO_OK "Login erfolgreich (UserID: $USER_ID)"
# Raum auflösen, wenn angegeben
ROOM_ID=""
if [[ -n "$RC_ROOM" ]]; then
ROOM_QUERY="${RC_ROOM/#\#}"
ROOM_RESP=$(curl -s -H "X-Auth-Token: $AUTH_TOKEN" -H "X-User-Id: $USER_ID" \
"${RC_URL%/}/api/v1/rooms.info?roomName=$ROOM_QUERY" 2>/dev/null) || true
if echo "$ROOM_RESP" | grep -q '"success":true'; then
ROOM_ID=$(echo "$ROOM_RESP" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d['room']['_id'])")
ECHO_OK "Raum gefunden: #$ROOM_QUERY (RoomID: $ROOM_ID)"
else
ECHO_WARN "Raum '#$ROOM_QUERY' nicht gefunden — überspringe"
fi
fi
# ── Schritt 6: Env-Variablen setzen ──
ECHO_STEP "6/7 Schreibe Konfiguration"
ENV_FILE="$HERMES_HOME/.env"
run_or_simulate "Verzeichnis erstellen: $HERMES_HOME" mkdir -p "$HERMES_HOME"
run_or_simulate "Env-Datei berühren: $ENV_FILE" touch "$ENV_FILE"
# Alte Einträge entfernen
if ! $DRY_RUN; then
sed -i '/^ROCKETCHAT_/d' "$ENV_FILE" 2>/dev/null || true
fi
run_or_simulate "Env-Einträge in $ENV_FILE schreiben" bash -c "
cat >> '$ENV_FILE' <<'INNEREOF'
# Rocket.Chat Plugin — generiert von install.sh am $(date +%Y-%m-%d)
export ROCKETCHAT_BASE_URL=\"$RC_URL\"
export ROCKETCHAT_USER=\"$RC_USER\"
export ROCKETCHAT_PASSWORD=\"$RC_PASS\"
export ROCKETCHAT_ALLOW_ALL_USERS=\"false\"
INNEREOF
[[ -n '$ROOM_ID' ]] && echo 'export ROCKETCHAT_ROOM_ID=\"$ROOM_ID\"' >> '$ENV_FILE'
"
$DRY_RUN || ECHO_OK "~/.hermes/.env aktualisiert"
# Optional: config.yaml Eintrag anzeigen
ECHO_INFO "Falls du config.yaml bevorzugst, füge Folgendes hinzu:"
cat <<EOF
plugins:
platforms:
rocketchat:
enabled: true
base_url: "$RC_URL"
user: "$RC_USER"
password: "$RC_PASS"
room_id: "${ROOM_ID:-optional}"
allowed_users: []
allow_all_users: false
EOF
# ── Schritt 7: Hermes Gateway Neustart ──
ECHO_STEP "7/7 Hermes Gateway Neustart"
if $DRY_RUN; then
ECHO_DRY "würde hermes gateway stop ausführen (falls verfügbar)"
ECHO_DRY "würde Hinweis ausgeben: hermes gateway start"
else
if command -v hermes &>/dev/null; then
hermes gateway stop 2>/dev/null || true
sleep 1
ECHO_OK "Hermes Gateway gestoppt"
echo ""
echo " Starte neu mit:"
echo " hermes gateway start"
echo ""
else
ECHO_WARN "'hermes' Befehl nicht im PATH gefunden"
echo " Bitte starte Hermes Gateway manuell:"
echo " hermes gateway start"
fi
fi
if $DRY_RUN; then
ECHO_STEP "🔍 DRY-RUN BEENDET"
ECHO_INFO "Es wurde NICHTS verändert."
ECHO_INFO "Starte ohne --dry-run für echte Installation."
else
ECHO_STEP "✨ Fertig!"
ECHO_OK "Plugin installiert unter: $PLUGIN_DEST"
ECHO_INFO "Env-Variablen geladen in: $ENV_FILE"
ECHO_INFO "Rocket.Chat Plugin ist bereit."
fi
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