45 lines
1.4 KiB
Bash
Executable File
45 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd -- "$SCRIPT_DIR/.." && pwd)"
|
|
|
|
cd "$PROJECT_ROOT"
|
|
|
|
HARD_RESET="${1:-}"
|
|
|
|
echo "[info] Stoppe und entferne Container, Netzwerke, Volumes"
|
|
"$SCRIPT_DIR/compose.sh" down -v --remove-orphans
|
|
|
|
echo "[info] Entferne ungenutzte lokale Images"
|
|
docker image prune -f >/dev/null 2>&1 || true
|
|
|
|
if [[ "$HARD_RESET" == "--hard" || "$HARD_RESET" == "--hard-origin" ]]; then
|
|
if git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
|
|
TARGET_REF="HEAD"
|
|
|
|
if [[ "$HARD_RESET" == "--hard-origin" ]]; then
|
|
echo "[info] Versuche auf origin/main zurueckzusetzen"
|
|
git fetch origin main --quiet >/dev/null 2>&1 || true
|
|
if git rev-parse --verify origin/main >/dev/null 2>&1; then
|
|
TARGET_REF="origin/main"
|
|
else
|
|
echo "[warn] origin/main nicht verfuegbar, fallback auf HEAD"
|
|
fi
|
|
fi
|
|
|
|
if git rev-parse --verify "$TARGET_REF" >/dev/null 2>&1; then
|
|
echo "[info] Git Hard Reset: stelle Dateien auf $TARGET_REF zurueck"
|
|
git restore --source="$TARGET_REF" --staged --worktree .
|
|
else
|
|
echo "[warn] Git-Repo ohne Commit-Historie, Datei-Restore wird uebersprungen"
|
|
fi
|
|
git clean -fd
|
|
else
|
|
echo "[warn] Kein Git-Repo erkannt, Git-Reset wird uebersprungen"
|
|
fi
|
|
fi
|
|
|
|
echo "[ok] Lab wurde zurueckgesetzt"
|
|
echo "[hint] Neu starten mit: ./scripts/bootstrap.sh"
|