go-wiki/deploy.sh
2026-07-14 20:46:19 +02:00

65 lines
2.7 KiB
Bash
Executable file

#!/bin/bash
# deploy.sh — lädt eine lokale Markdown-Datei auf den Wiki-Server hoch.
#
# Verwendung:
# ./deploy.sh lokale-datei.md /ziel/pfad.md
#
# Beispiele:
# ./deploy.sh notes.md /projekte/notes.md
# ./deploy.sh index.md /index.md
#
# WIKI_TOKEN ist normalerweise der Zugriffskey deines Teams (aus teams.yaml) —
# der Server leitet daraus automatisch das Zielteam ab, ein Team-Parameter ist
# dann nicht nötig.
#
# Nutzt du stattdessen den globalen ADMIN_TOKEN, muss zusätzlich WIKI_TEAM
# gesetzt sein (welches Team gemeint ist), z.B.:
# WIKI_TOKEN=<admin-token> WIKI_TEAM=alpha ./deploy.sh notes.md /projekte/notes.md
# Bei jedem Fehler sofort abbrechen (statt weiterzumachen mit kaputtem Zustand)
set -e
# ── Konfiguration ─────────────────────────────────────────────────────────────
# Diese Werte vor dem ersten Einsatz anpassen!
TOKEN="${WIKI_TOKEN:-mein-geheimer-token}" # Team-Key (oder Admin-Token, siehe oben)
TEAM="${WIKI_TEAM:-}" # Nur nötig wenn TOKEN der Admin-Token ist
SERVER="${WIKI_SERVER:-https://wiki.example.com}"
# ── Argumente prüfen ──────────────────────────────────────────────────────────
if [ "$#" -ne 2 ]; then
echo "Fehler: Zwei Argumente erwartet."
echo ""
echo "Verwendung: $0 <lokale-datei.md> </ziel/pfad.md>"
echo "Beispiel: $0 notes.md /projekte/notes.md"
exit 1
fi
LOCAL_FILE="$1" # z.B. notes.md
REMOTE_PATH="$2" # z.B. /projekte/notes.md
# Prüfen ob die lokale Datei existiert
if [ ! -f "$LOCAL_FILE" ]; then
echo "Fehler: Datei nicht gefunden: $LOCAL_FILE"
exit 1
fi
# ── Upload ────────────────────────────────────────────────────────────────────
echo "Uploading $LOCAL_FILE$REMOTE_PATH"
# curl sendet die Datei als Multipart-Formular an den Server.
# -f = Fehler bei HTTP-Fehlercodes (ohne -f würde curl auch bei 401 "OK" melden)
# -H = Header setzen (Team-Key oder Admin-Token)
# -F = Formularfeld (Multipart)
# file=@$LOCAL_FILE → @ bedeutet: Dateiinhalt, nicht den String
# path=$REMOTE_PATH → Zielpfad auf dem Server (relativ zum Team-Ordner)
# team=$TEAM → nur beim Admin-Token nötig, sonst leer und wird ignoriert
curl -f \
-H "Authorization: Bearer $TOKEN" \
-F "file=@$LOCAL_FILE" \
-F "path=$REMOTE_PATH" \
-F "team=$TEAM" \
"$SERVER/api/upload"
echo ""
echo "Fertig!"