#!/usr/bin/env zsh set -euo pipefail # rebreak-monorepo helper: git add . + commit + push origin . # Usage: ./xgit "fix(backend/sos): single-instruction tts" # Wenn keine Message: prompted interaktiv. # Wenn Backend-Files geändert: bietet pre-push nitro build an (optional). if ! git rev-parse --git-dir > /dev/null 2>&1; then echo "Error: aktuelles Verzeichnis ist kein Git-Repository" >&2 exit 1 fi if [ "$#" -gt 0 ]; then msg="$*" else printf "Commit message: " >&2 read -r msg fi if [ -z "${msg// /}" ]; then echo "Abbruch: Commit-Message leer" >&2 exit 1 fi # Backend-Files staged? → Build-Validation anbieten. if git status --porcelain | grep -qE '^.. backend/(server|prisma|nitro\.config)' 2>/dev/null; then printf "Backend-Files geändert. nitro build vor push? [Y/n] " >&2 read -r run_build if [[ "$run_build" != "n" && "$run_build" != "N" ]]; then echo "Starte nitro build..." (cd backend && pnpm build) || { echo "Build fehlgeschlagen – Commit abgebrochen." >&2; exit 1; } echo "" fi fi echo "Staging alle Änderungen..." git add . if git diff --cached --quiet; then echo "Keine Änderungen zum Commit vorhanden." >&2 exit 0 fi echo "Erstelle Commit: $msg" git commit -m "$msg" branch=$(git rev-parse --abbrev-ref HEAD) echo "Pushe Branch $branch nach origin..." git push origin "$branch" echo "Fertig."