forked from Qortal/q-blog
37 lines
1.4 KiB
Bash
Executable File
37 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
# Create a PR via Gitea API using body from a file (default pr/phase0.md)
|
|
# Env: GITEA_BASE_URL, GITEA_TOKEN, OWNER, REPO
|
|
# Args: [HEAD_BRANCH] [BASE_BRANCH=main] [BODY_FILE=pr/phase0.md]
|
|
|
|
HEAD_BRANCH="${1:-$(git symbolic-ref --short -q HEAD || echo '')}"
|
|
BASE_BRANCH="${2:-main}"
|
|
BODY_FILE="${3:-pr/phase0.md}"
|
|
|
|
need () {
|
|
for v in GITEA_BASE_URL GITEA_TOKEN OWNER REPO; do
|
|
if [[ -z "${!v:-}" ]]; then echo "ERROR: Missing $v" >&2; exit 1; fi
|
|
done
|
|
[[ -f "$BODY_FILE" ]] || { echo "Body file not found: $BODY_FILE" >&2; exit 1; }
|
|
if [[ -z "$HEAD_BRANCH" ]]; then
|
|
echo "ERROR: Not on a named branch (detached HEAD). Pass HEAD_BRANCH explicitly." >&2
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
main () {
|
|
need
|
|
TITLE="$(head -n1 "$BODY_FILE" | sed 's/^# *//')"
|
|
BODY="$(sed '1d' "$BODY_FILE")"
|
|
PAYLOAD="$(jq -n --arg title "$TITLE" --arg head "$HEAD_BRANCH" --arg base "$BASE_BRANCH" --arg body "$BODY" '{title:$title, head:$head, base:$base, body:$body}')"
|
|
RESP="$(curl -sS -X POST -H "Authorization: token ${GITEA_TOKEN}" -H "Content-Type: application/json" "${GITEA_BASE_URL}/api/v1/repos/${OWNER}/${REPO}/pulls" --data "$PAYLOAD")"
|
|
echo "$RESP" | jq '{number, state, html_url, title}'
|
|
if [[ "$(echo "$RESP" | jq -r '.number')" == "null" ]]; then
|
|
echo "ERROR: PR not created. Full response:" >&2
|
|
echo "$RESP" >&2
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
main "$@"
|