diff --git a/README.md b/README.md index 4bc2156..e16f20e 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,8 @@ Ein SFTP-Deployment ist vorbereitet. 1. Vorlage kopieren: `cp .deploy.env.example .deploy.env` 2. In `.deploy.env` Host, Benutzer, Port und Zielpfad eintragen 3. Upload-Liste bei Bedarf in `scripts/deploy-include.txt` anpassen -4. Deployment starten: `./scripts/deploy-sftp.sh` +4. Optional Vorschau anzeigen: `./scripts/deploy-sftp.sh --dry-run` +5. Deployment starten: `./scripts/deploy-sftp.sh` Beispiel fuer die Konfiguration: @@ -40,4 +41,6 @@ Das Skript uebertraegt die statischen Projektdateien und Verzeichnisse `css`, `i Vor dem Verbindungsaufbau prueft das Skript, ob alle in `scripts/deploy-include.txt` aufgefuehrten Dateien und Verzeichnisse lokal vorhanden sind. Die Upload-Liste kann damit zentral gepflegt werden. +Mit `--dry-run` gibt das Skript nur die erzeugten SFTP-Befehle aus, ohne eine Verbindung zum Server aufzubauen. + Wichtig: Das Deployment aktualisiert vorhandene Dateien, entfernt aber keine Dateien auf dem Server, die lokal bereits geloescht wurden. \ No newline at end of file diff --git a/scripts/deploy-sftp.sh b/scripts/deploy-sftp.sh index 5650c15..fad8bb2 100755 --- a/scripts/deploy-sftp.sh +++ b/scripts/deploy-sftp.sh @@ -2,6 +2,22 @@ set -euo pipefail +dry_run=false + +while [[ $# -gt 0 ]]; do + case "$1" in + --dry-run) + dry_run=true + ;; + *) + echo "Unbekanntes Argument: $1" >&2 + echo "Verwendung: $0 [--dry-run]" >&2 + exit 1 + ;; + esac + shift +done + repo_root="$(cd "$(dirname "$0")/.." && pwd)" config_file="$repo_root/.deploy.env" include_file="${DEPLOY_INCLUDE_FILE:-$repo_root/scripts/deploy-include.txt}" @@ -73,6 +89,12 @@ for item in "${deploy_items[@]}"; do fi done +if [[ "$dry_run" == true ]]; then + echo "Dry-Run: folgende SFTP-Befehle wuerden ausgefuehrt:" + cat "$batch_file" + exit 0 +fi + cd "$repo_root" sftp -P "$deploy_port" "$DEPLOY_USER@$DEPLOY_HOST" < "$batch_file"