fix: handle legacy Woodpecker mosaic credentials #522
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# issue-list.sh - List issues on Gitea or GitHub
|
# issue-list.sh - List issues on Gitea or GitHub
|
||||||
# Usage: issue-list.sh [-s state] [-l label] [-m milestone] [-a assignee]
|
# Usage: issue-list.sh [-r owner/repo] [-s state] [-l label] [-m milestone] [-a assignee]
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
@@ -13,6 +13,7 @@ LABEL=""
|
|||||||
MILESTONE=""
|
MILESTONE=""
|
||||||
ASSIGNEE=""
|
ASSIGNEE=""
|
||||||
LIMIT=100
|
LIMIT=100
|
||||||
|
REPO_OVERRIDE=""
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
@@ -26,12 +27,14 @@ Options:
|
|||||||
-m, --milestone NAME Filter by milestone name
|
-m, --milestone NAME Filter by milestone name
|
||||||
-a, --assignee USER Filter by assignee
|
-a, --assignee USER Filter by assignee
|
||||||
-n, --limit N Maximum issues to show (default: 100)
|
-n, --limit N Maximum issues to show (default: 100)
|
||||||
|
-r, --repo OWNER/REPO Repository slug (default: infer from git origin)
|
||||||
-h, --help Show this help message
|
-h, --help Show this help message
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
$(basename "$0") # List open issues
|
$(basename "$0") # List open issues
|
||||||
$(basename "$0") -s all -l bug # All issues with 'bug' label
|
$(basename "$0") -s all -l bug # All issues with 'bug' label
|
||||||
$(basename "$0") -m "0.2.0" # Issues in milestone 0.2.0
|
$(basename "$0") -m "0.2.0" # Issues in milestone 0.2.0
|
||||||
|
$(basename "$0") --repo ddk/ai-bma # List issues from anywhere
|
||||||
EOF
|
EOF
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
@@ -59,6 +62,10 @@ while [[ $# -gt 0 ]]; do
|
|||||||
LIMIT="$2"
|
LIMIT="$2"
|
||||||
shift 2
|
shift 2
|
||||||
;;
|
;;
|
||||||
|
-r|--repo)
|
||||||
|
REPO_OVERRIDE="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
-h|--help)
|
-h|--help)
|
||||||
usage
|
usage
|
||||||
;;
|
;;
|
||||||
@@ -69,25 +76,33 @@ while [[ $# -gt 0 ]]; do
|
|||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
PLATFORM=$(detect_platform)
|
if [[ -n "$REPO_OVERRIDE" ]]; then
|
||||||
|
REPO_INFO="$REPO_OVERRIDE"
|
||||||
|
PLATFORM=$(detect_platform 2>/dev/null || echo gitea)
|
||||||
|
else
|
||||||
|
PLATFORM=$(detect_platform)
|
||||||
|
REPO_INFO=$(get_repo_info)
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z "$REPO_INFO" || "$REPO_INFO" == error:* ]]; then
|
||||||
|
echo "Error: Could not determine repository from git origin. Run from a repo or pass --repo." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
case "$PLATFORM" in
|
case "$PLATFORM" in
|
||||||
github)
|
github)
|
||||||
CMD="gh issue list --state $STATE --limit $LIMIT"
|
CMD=(gh issue list --repo "$REPO_INFO" --state "$STATE" --limit "$LIMIT")
|
||||||
[[ -n "$LABEL" ]] && CMD="$CMD --label \"$LABEL\""
|
[[ -n "$LABEL" ]] && CMD+=(--label "$LABEL")
|
||||||
[[ -n "$MILESTONE" ]] && CMD="$CMD --milestone \"$MILESTONE\""
|
[[ -n "$MILESTONE" ]] && CMD+=(--milestone "$MILESTONE")
|
||||||
[[ -n "$ASSIGNEE" ]] && CMD="$CMD --assignee \"$ASSIGNEE\""
|
[[ -n "$ASSIGNEE" ]] && CMD+=(--assignee "$ASSIGNEE")
|
||||||
eval "$CMD"
|
"${CMD[@]}"
|
||||||
;;
|
;;
|
||||||
gitea)
|
gitea)
|
||||||
CMD="tea issues list --state $STATE --limit $LIMIT"
|
CMD=(tea issues list --repo "$REPO_INFO" --state "$STATE" --limit "$LIMIT")
|
||||||
[[ -n "$LABEL" ]] && CMD="$CMD --labels \"$LABEL\""
|
[[ -n "$LABEL" ]] && CMD+=(--labels "$LABEL")
|
||||||
[[ -n "$MILESTONE" ]] && CMD="$CMD --milestones \"$MILESTONE\""
|
[[ -n "$MILESTONE" ]] && CMD+=(--milestones "$MILESTONE")
|
||||||
# Note: tea may not support assignee filter directly
|
[[ -n "$ASSIGNEE" ]] && CMD+=(--assignee "$ASSIGNEE")
|
||||||
eval "$CMD"
|
"${CMD[@]}"
|
||||||
if [[ -n "$ASSIGNEE" ]]; then
|
|
||||||
echo "Note: Assignee filtering may require manual review for Gitea" >&2
|
|
||||||
fi
|
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Error: Could not detect git platform" >&2
|
echo "Error: Could not detect git platform" >&2
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# pr-ci-wait.sh - Wait for PR CI status to reach terminal state (GitHub/Gitea)
|
# pr-ci-wait.sh - Wait for PR CI status to reach terminal state (GitHub/Gitea)
|
||||||
# Usage: pr-ci-wait.sh -n <pr_number> [-t timeout_sec] [-i interval_sec]
|
# Usage: pr-ci-wait.sh -n <pr_number> [-r owner/repo] [-t timeout_sec] [-i interval_sec]
|
||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
@@ -10,6 +10,7 @@ source "$SCRIPT_DIR/detect-platform.sh"
|
|||||||
PR_NUMBER=""
|
PR_NUMBER=""
|
||||||
TIMEOUT_SEC=1800
|
TIMEOUT_SEC=1800
|
||||||
INTERVAL_SEC=15
|
INTERVAL_SEC=15
|
||||||
|
REPO_OVERRIDE=""
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
@@ -17,12 +18,14 @@ Usage: $(basename "$0") -n <pr_number> [-t timeout_sec] [-i interval_sec]
|
|||||||
|
|
||||||
Options:
|
Options:
|
||||||
-n, --number NUMBER PR number (required)
|
-n, --number NUMBER PR number (required)
|
||||||
|
-r, --repo OWNER/REPO Repository slug (default: infer from git origin)
|
||||||
-t, --timeout SECONDS Max wait time in seconds (default: 1800)
|
-t, --timeout SECONDS Max wait time in seconds (default: 1800)
|
||||||
-i, --interval SECONDS Poll interval in seconds (default: 15)
|
-i, --interval SECONDS Poll interval in seconds (default: 15)
|
||||||
-h, --help Show this help
|
-h, --help Show this help
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
$(basename "$0") -n 643
|
$(basename "$0") -n 643
|
||||||
|
$(basename "$0") -n 643 --repo ddk/ai-bma
|
||||||
$(basename "$0") -n 643 -t 900 -i 10
|
$(basename "$0") -n 643 -t 900 -i 10
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
@@ -95,7 +98,7 @@ PY
|
|||||||
}
|
}
|
||||||
|
|
||||||
github_get_pr_head_sha() {
|
github_get_pr_head_sha() {
|
||||||
gh pr view "$PR_NUMBER" --json headRefOid --jq '.headRefOid'
|
gh pr view "$PR_NUMBER" --repo "$OWNER/$REPO" --json headRefOid --jq '.headRefOid'
|
||||||
}
|
}
|
||||||
|
|
||||||
github_get_commit_status_json() {
|
github_get_commit_status_json() {
|
||||||
@@ -132,6 +135,10 @@ while [[ $# -gt 0 ]]; do
|
|||||||
PR_NUMBER="$2"
|
PR_NUMBER="$2"
|
||||||
shift 2
|
shift 2
|
||||||
;;
|
;;
|
||||||
|
-r|--repo)
|
||||||
|
REPO_OVERRIDE="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
-t|--timeout)
|
-t|--timeout)
|
||||||
TIMEOUT_SEC="$2"
|
TIMEOUT_SEC="$2"
|
||||||
shift 2
|
shift 2
|
||||||
@@ -163,10 +170,21 @@ if ! [[ "$TIMEOUT_SEC" =~ ^[0-9]+$ ]] || ! [[ "$INTERVAL_SEC" =~ ^[0-9]+$ ]]; th
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
detect_platform > /dev/null
|
if [[ -n "$REPO_OVERRIDE" ]]; then
|
||||||
|
REPO_INFO="$REPO_OVERRIDE"
|
||||||
|
PLATFORM=$(detect_platform 2>/dev/null || echo gitea)
|
||||||
|
else
|
||||||
|
detect_platform > /dev/null
|
||||||
|
REPO_INFO=$(get_repo_info)
|
||||||
|
fi
|
||||||
|
|
||||||
OWNER=$(get_repo_owner)
|
if [[ -z "$REPO_INFO" || "$REPO_INFO" == error:* || "$REPO_INFO" != */* ]]; then
|
||||||
REPO=$(get_repo_name)
|
echo "Error: Could not determine repository from git origin. Run from a repo or pass --repo owner/repo." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
OWNER=${REPO_INFO%%/*}
|
||||||
|
REPO=${REPO_INFO##*/}
|
||||||
START_TS=$(date +%s)
|
START_TS=$(date +%s)
|
||||||
DEADLINE_TS=$((START_TS + TIMEOUT_SEC))
|
DEADLINE_TS=$((START_TS + TIMEOUT_SEC))
|
||||||
|
|
||||||
@@ -182,10 +200,7 @@ if [[ "$PLATFORM" == "github" ]]; then
|
|||||||
fi
|
fi
|
||||||
echo "[pr-ci-wait] Platform=github PR=#${PR_NUMBER} head_sha=${HEAD_SHA}"
|
echo "[pr-ci-wait] Platform=github PR=#${PR_NUMBER} head_sha=${HEAD_SHA}"
|
||||||
elif [[ "$PLATFORM" == "gitea" ]]; then
|
elif [[ "$PLATFORM" == "gitea" ]]; then
|
||||||
HOST=$(get_remote_host) || {
|
HOST=$(get_remote_host 2>/dev/null || echo "git.mosaicstack.dev")
|
||||||
echo "Error: Could not determine remote host." >&2
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
TOKEN=$(get_gitea_token "$HOST") || {
|
TOKEN=$(get_gitea_token "$HOST") || {
|
||||||
echo "Error: Gitea token not found. Set GITEA_TOKEN or configure ~/.git-credentials." >&2
|
echo "Error: Gitea token not found. Set GITEA_TOKEN or configure ~/.git-credentials." >&2
|
||||||
exit 1
|
exit 1
|
||||||
@@ -195,7 +210,7 @@ elif [[ "$PLATFORM" == "gitea" ]]; then
|
|||||||
echo "Error: Could not resolve head SHA for PR #$PR_NUMBER." >&2
|
echo "Error: Could not resolve head SHA for PR #$PR_NUMBER." >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
echo "[pr-ci-wait] Platform=gitea host=${HOST} PR=#${PR_NUMBER} head_sha=${HEAD_SHA}"
|
echo "[pr-ci-wait] Platform=gitea host=${HOST} repo=${OWNER}/${REPO} PR=#${PR_NUMBER} head_sha=${HEAD_SHA}"
|
||||||
else
|
else
|
||||||
echo "Error: Unsupported platform '${PLATFORM}'." >&2
|
echo "Error: Unsupported platform '${PLATFORM}'." >&2
|
||||||
exit 1
|
exit 1
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# pr-diff.sh - Get the diff for a pull request on GitHub or Gitea
|
# pr-diff.sh - Get the diff for a pull request on GitHub or Gitea
|
||||||
# Usage: pr-diff.sh -n <pr_number> [-o <output_file>]
|
# Usage: pr-diff.sh -n <pr_number> [-r owner/repo] [-o <output_file>]
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
@@ -10,6 +10,7 @@ source "$SCRIPT_DIR/detect-platform.sh"
|
|||||||
# Parse arguments
|
# Parse arguments
|
||||||
PR_NUMBER=""
|
PR_NUMBER=""
|
||||||
OUTPUT_FILE=""
|
OUTPUT_FILE=""
|
||||||
|
REPO_OVERRIDE=""
|
||||||
|
|
||||||
while [[ $# -gt 0 ]]; do
|
while [[ $# -gt 0 ]]; do
|
||||||
case $1 in
|
case $1 in
|
||||||
@@ -21,11 +22,16 @@ while [[ $# -gt 0 ]]; do
|
|||||||
OUTPUT_FILE="$2"
|
OUTPUT_FILE="$2"
|
||||||
shift 2
|
shift 2
|
||||||
;;
|
;;
|
||||||
|
-r|--repo)
|
||||||
|
REPO_OVERRIDE="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
-h|--help)
|
-h|--help)
|
||||||
echo "Usage: pr-diff.sh -n <pr_number> [-o <output_file>]"
|
echo "Usage: pr-diff.sh -n <pr_number> [-r owner/repo] [-o <output_file>]"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Options:"
|
echo "Options:"
|
||||||
echo " -n, --number PR number (required)"
|
echo " -n, --number PR number (required)"
|
||||||
|
echo " -r, --repo Repository slug (default: infer from git origin)"
|
||||||
echo " -o, --output Output file (optional, prints to stdout if omitted)"
|
echo " -o, --output Output file (optional, prints to stdout if omitted)"
|
||||||
echo " -h, --help Show this help"
|
echo " -h, --help Show this help"
|
||||||
exit 0
|
exit 0
|
||||||
@@ -42,31 +48,30 @@ if [[ -z "$PR_NUMBER" ]]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
detect_platform > /dev/null
|
if [[ -n "$REPO_OVERRIDE" ]]; then
|
||||||
|
REPO_INFO="$REPO_OVERRIDE"
|
||||||
|
PLATFORM=$(detect_platform 2>/dev/null || echo gitea)
|
||||||
|
else
|
||||||
|
detect_platform > /dev/null
|
||||||
|
REPO_INFO=$(get_repo_info)
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z "$REPO_INFO" || "$REPO_INFO" == error:* ]]; then
|
||||||
|
echo "Error: Could not determine repository from git origin. Run from a repo or pass --repo." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ "$PLATFORM" == "github" ]]; then
|
if [[ "$PLATFORM" == "github" ]]; then
|
||||||
if [[ -n "$OUTPUT_FILE" ]]; then
|
if [[ -n "$OUTPUT_FILE" ]]; then
|
||||||
gh pr diff "$PR_NUMBER" > "$OUTPUT_FILE"
|
gh pr diff "$PR_NUMBER" --repo "$REPO_INFO" --repo "$REPO_INFO" > "$OUTPUT_FILE"
|
||||||
else
|
else
|
||||||
gh pr diff "$PR_NUMBER"
|
gh pr diff "$PR_NUMBER" --repo "$REPO_INFO"
|
||||||
fi
|
fi
|
||||||
elif [[ "$PLATFORM" == "gitea" ]]; then
|
elif [[ "$PLATFORM" == "gitea" ]]; then
|
||||||
# tea doesn't have a direct diff command — use the API
|
# tea doesn't have a direct diff command — use the API
|
||||||
OWNER=$(get_repo_owner)
|
HOST=$(get_remote_host 2>/dev/null || echo "git.mosaicstack.dev")
|
||||||
REPO=$(get_repo_name)
|
|
||||||
REMOTE_URL=$(git remote get-url origin 2>/dev/null)
|
|
||||||
|
|
||||||
# Extract host from remote URL
|
DIFF_URL="https://${HOST}/api/v1/repos/${REPO_INFO}/pulls/${PR_NUMBER}.diff"
|
||||||
if [[ "$REMOTE_URL" == https://* ]]; then
|
|
||||||
HOST=$(echo "$REMOTE_URL" | sed -E 's|https://([^/]+)/.*|\1|')
|
|
||||||
elif [[ "$REMOTE_URL" == git@* ]]; then
|
|
||||||
HOST=$(echo "$REMOTE_URL" | sed -E 's|git@([^:]+):.*|\1|')
|
|
||||||
else
|
|
||||||
echo "Error: Cannot determine host from remote URL" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
DIFF_URL="https://${HOST}/api/v1/repos/${OWNER}/${REPO}/pulls/${PR_NUMBER}.diff"
|
|
||||||
|
|
||||||
GITEA_API_TOKEN=$(get_gitea_token "$HOST" || true)
|
GITEA_API_TOKEN=$(get_gitea_token "$HOST" || true)
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# pr-list.sh - List pull requests on Gitea or GitHub
|
# pr-list.sh - List pull requests on Gitea or GitHub
|
||||||
# Usage: pr-list.sh [-s state] [-l label] [-a author]
|
# Usage: pr-list.sh [-r owner/repo] [-s state] [-l label] [-a author]
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
@@ -12,6 +12,7 @@ STATE="open"
|
|||||||
LABEL=""
|
LABEL=""
|
||||||
AUTHOR=""
|
AUTHOR=""
|
||||||
LIMIT=100
|
LIMIT=100
|
||||||
|
REPO_OVERRIDE=""
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
@@ -24,12 +25,14 @@ Options:
|
|||||||
-l, --label LABEL Filter by label
|
-l, --label LABEL Filter by label
|
||||||
-a, --author USER Filter by author
|
-a, --author USER Filter by author
|
||||||
-n, --limit N Maximum PRs to show (default: 100)
|
-n, --limit N Maximum PRs to show (default: 100)
|
||||||
|
-r, --repo OWNER/REPO Repository slug (default: infer from git origin)
|
||||||
-h, --help Show this help message
|
-h, --help Show this help message
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
$(basename "$0") # List open PRs
|
$(basename "$0") # List open PRs
|
||||||
$(basename "$0") -s all # All PRs
|
$(basename "$0") -s all # All PRs
|
||||||
$(basename "$0") -s merged -a username # Merged PRs by user
|
$(basename "$0") -s merged -a username # Merged PRs by user
|
||||||
|
$(basename "$0") --repo ddk/ai-bma # List PRs from anywhere
|
||||||
EOF
|
EOF
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
@@ -53,6 +56,10 @@ while [[ $# -gt 0 ]]; do
|
|||||||
LIMIT="$2"
|
LIMIT="$2"
|
||||||
shift 2
|
shift 2
|
||||||
;;
|
;;
|
||||||
|
-r|--repo)
|
||||||
|
REPO_OVERRIDE="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
-h|--help)
|
-h|--help)
|
||||||
usage
|
usage
|
||||||
;;
|
;;
|
||||||
@@ -63,18 +70,30 @@ while [[ $# -gt 0 ]]; do
|
|||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
PLATFORM=$(detect_platform)
|
if [[ -n "$REPO_OVERRIDE" ]]; then
|
||||||
|
REPO_INFO="$REPO_OVERRIDE"
|
||||||
|
# Explicit --repo is primarily for Gitea wrappers; if a git origin is present,
|
||||||
|
# still honor GitHub detection for cross-platform behavior.
|
||||||
|
PLATFORM=$(detect_platform 2>/dev/null || echo gitea)
|
||||||
|
else
|
||||||
|
PLATFORM=$(detect_platform)
|
||||||
|
REPO_INFO=$(get_repo_info)
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z "$REPO_INFO" || "$REPO_INFO" == error:* ]]; then
|
||||||
|
echo "Error: Could not determine repository from git origin. Run from a repo or pass --repo." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
case "$PLATFORM" in
|
case "$PLATFORM" in
|
||||||
github)
|
github)
|
||||||
CMD="gh pr list --state $STATE --limit $LIMIT"
|
CMD=(gh pr list --repo "$REPO_INFO" --state "$STATE" --limit "$LIMIT")
|
||||||
[[ -n "$LABEL" ]] && CMD="$CMD --label \"$LABEL\""
|
[[ -n "$LABEL" ]] && CMD+=(--label "$LABEL")
|
||||||
[[ -n "$AUTHOR" ]] && CMD="$CMD --author \"$AUTHOR\""
|
[[ -n "$AUTHOR" ]] && CMD+=(--author "$AUTHOR")
|
||||||
eval "$CMD"
|
"${CMD[@]}"
|
||||||
;;
|
;;
|
||||||
gitea)
|
gitea)
|
||||||
# tea pr list - note: tea uses 'pulls' subcommand in some versions
|
CMD=(tea pr list --repo "$REPO_INFO" --state "$STATE" --limit "$LIMIT")
|
||||||
CMD="tea pr list --state $STATE --limit $LIMIT"
|
|
||||||
|
|
||||||
# tea filtering may be limited
|
# tea filtering may be limited
|
||||||
if [[ -n "$LABEL" ]]; then
|
if [[ -n "$LABEL" ]]; then
|
||||||
@@ -84,7 +103,7 @@ case "$PLATFORM" in
|
|||||||
echo "Note: Author filtering may require manual review for Gitea" >&2
|
echo "Note: Author filtering may require manual review for Gitea" >&2
|
||||||
fi
|
fi
|
||||||
|
|
||||||
eval "$CMD"
|
"${CMD[@]}"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Error: Could not detect git platform" >&2
|
echo "Error: Could not detect git platform" >&2
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# pr-view.sh - View pull request details on GitHub or Gitea
|
# pr-view.sh - View pull request details on GitHub or Gitea
|
||||||
# Usage: pr-view.sh -n <pr_number>
|
# Usage: pr-view.sh -n <pr_number> [-r owner/repo]
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
@@ -9,6 +9,7 @@ source "$SCRIPT_DIR/detect-platform.sh"
|
|||||||
|
|
||||||
# Parse arguments
|
# Parse arguments
|
||||||
PR_NUMBER=""
|
PR_NUMBER=""
|
||||||
|
REPO_OVERRIDE=""
|
||||||
|
|
||||||
while [[ $# -gt 0 ]]; do
|
while [[ $# -gt 0 ]]; do
|
||||||
case $1 in
|
case $1 in
|
||||||
@@ -16,11 +17,16 @@ while [[ $# -gt 0 ]]; do
|
|||||||
PR_NUMBER="$2"
|
PR_NUMBER="$2"
|
||||||
shift 2
|
shift 2
|
||||||
;;
|
;;
|
||||||
|
-r|--repo)
|
||||||
|
REPO_OVERRIDE="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
-h|--help)
|
-h|--help)
|
||||||
echo "Usage: pr-view.sh -n <pr_number>"
|
echo "Usage: pr-view.sh -n <pr_number> [-r owner/repo]"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Options:"
|
echo "Options:"
|
||||||
echo " -n, --number PR number (required)"
|
echo " -n, --number PR number (required)"
|
||||||
|
echo " -r, --repo Repository slug (default: infer from git origin)"
|
||||||
echo " -h, --help Show this help"
|
echo " -h, --help Show this help"
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
@@ -36,12 +42,23 @@ if [[ -z "$PR_NUMBER" ]]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
detect_platform
|
if [[ -n "$REPO_OVERRIDE" ]]; then
|
||||||
|
REPO_INFO="$REPO_OVERRIDE"
|
||||||
|
PLATFORM=$(detect_platform 2>/dev/null || echo gitea)
|
||||||
|
else
|
||||||
|
detect_platform > /dev/null
|
||||||
|
REPO_INFO=$(get_repo_info)
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z "$REPO_INFO" || "$REPO_INFO" == error:* ]]; then
|
||||||
|
echo "Error: Could not determine repository from git origin. Run from a repo or pass --repo." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ "$PLATFORM" == "github" ]]; then
|
if [[ "$PLATFORM" == "github" ]]; then
|
||||||
gh pr view "$PR_NUMBER"
|
gh pr view "$PR_NUMBER" --repo "$REPO_INFO"
|
||||||
elif [[ "$PLATFORM" == "gitea" ]]; then
|
elif [[ "$PLATFORM" == "gitea" ]]; then
|
||||||
tea pr "$PR_NUMBER"
|
tea pr "$PR_NUMBER" --repo "$REPO_INFO"
|
||||||
else
|
else
|
||||||
echo "Error: Unknown platform"
|
echo "Error: Unknown platform"
|
||||||
exit 1
|
exit 1
|
||||||
|
|||||||
Reference in New Issue
Block a user