65 lines
2.7 KiB
Bash
Executable file
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!"
|