#!/usr/bin/env bash
# git-pr.sh – Pull-Request via Gitea API erstellen und optional mergen
#
# Verwendung:
# bash .claude/scripts/git-pr.sh create
"" [""]
# bash .claude/scripts/git-pr.sh merge [squash|merge|rebase]
# bash .claude/scripts/git-pr.sh list [open|closed]
set -euo pipefail
REPO="Admin/gartenmanager"
API="https://tea.jr-family.de/api/v1"
get_token() {
git credential fill <<'EOF' | grep "^password=" | cut -d= -f2-
protocol=https
host=tea.jr-family.de
EOF
}
CMD="${1:-}"
case "$CMD" in
create)
HEAD="${2:?'head branch fehlt'}"
BASE="${3:?'base branch fehlt'}"
TITLE="${4:?'titel fehlt'}"
BODY="${5:-}"
TOKEN=$(get_token)
RESULT=$(curl -s -X POST "$API/repos/$REPO/pulls" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d "{\"head\":\"$HEAD\",\"base\":\"$BASE\",\"title\":\"$TITLE\",\"body\":\"$BODY\"}")
PR_NUM=$(echo "$RESULT" | python3 -c "import sys,json; r=json.load(sys.stdin); print(r.get('number','ERR: '+str(r.get('message',''))))")
echo "PR #$PR_NUM erstellt: $TITLE ($HEAD → $BASE)"
;;
merge)
PR_NUM="${2:?'PR-Nummer fehlt'}"
STYLE="${3:-squash}"
TOKEN=$(get_token)
curl -s -X POST "$API/repos/$REPO/pulls/$PR_NUM/merge" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d "{\"Do\":\"$STYLE\"}"
echo "PR #$PR_NUM gemergt ($STYLE)"
;;
list)
STATE="${2:-open}"
TOKEN=$(get_token)
curl -s "$API/repos/$REPO/pulls?state=$STATE&limit=20" \
-H "Authorization: Bearer $TOKEN" | \
python3 -c "import sys,json; [print(f\"#{r['number']} [{r['state']}] {r['title']} ({r['head']['label']} → {r['base']['label']})\") for r in json.load(sys.stdin)]"
;;
*)
echo "Verwendung: bash .claude/scripts/git-pr.sh [create|merge|list] ..."
exit 1
;;
esac