diff --git a/COMMUNITY_POST.md b/COMMUNITY_POST.md index 8b77655..13b49d3 100644 --- a/COMMUNITY_POST.md +++ b/COMMUNITY_POST.md @@ -37,24 +37,52 @@ Statt über ein separates Gateway-Binary zu kommunizieren, spricht Hermes Agent - Laufender Rocket.Chat-Server (v5+ empfohlen) - Bot-Benutzer auf Rocket.Chat mit Login-Daten -### 2. Plugin installieren +### 2. Plugin herunterladen ```bash -# In das Hermes Agent Verzeichnis wechseln -cd ~/.hermes/hermes-agent - -# 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/ +git clone https://gitea.thomander.de/andreas/Hermes_rocket.chat_Plugin.git +cd Hermes_rocket.chat_Plugin ``` -### 3. Konfigurieren - -**Variante A — Umgebungsvariablen:** +### 3. Interaktive Installation (empfohlen) ```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_USER="bernd" export ROCKETCHAT_PASSWORD="dein-passwort" diff --git a/install.sh b/install.sh index 6236309..4748475 100755 --- a/install.sh +++ b/install.sh @@ -6,9 +6,35 @@ # 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 diff --git a/uninstall.sh b/uninstall.sh new file mode 100755 index 0000000..4fe9791 --- /dev/null +++ b/uninstall.sh @@ -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