#!/bin/bash # issue-view.sh - View issue details on GitHub or Gitea # Usage: issue-view.sh -i set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source "$SCRIPT_DIR/detect-platform.sh" # Parse arguments ISSUE_NUMBER="" # get_remote_host and get_gitea_token are provided by detect-platform.sh gitea_issue_view_api() { local host repo token url host=$(get_remote_host) || { echo "Error: could not determine remote host for API fallback" >&2 return 1 } repo=$(get_repo_info) || { echo "Error: could not determine repo owner/name for API fallback" >&2 return 1 } token=$(get_gitea_token "$host") || { echo "Error: Gitea token not found for API fallback (set GITEA_TOKEN or configure ~/.git-credentials)" >&2 return 1 } url="https://${host}/api/v1/repos/${repo}/issues/${ISSUE_NUMBER}" if command -v python3 >/dev/null 2>&1; then curl -fsS -H "Authorization: token ${token}" "$url" | python3 -m json.tool else curl -fsS -H "Authorization: token ${token}" "$url" fi } while [[ $# -gt 0 ]]; do case $1 in -i|--issue) ISSUE_NUMBER="$2" shift 2 ;; -h|--help) echo "Usage: issue-view.sh -i " echo "" echo "Options:" echo " -i, --issue Issue number (required)" echo " -h, --help Show this help" exit 0 ;; *) echo "Unknown option: $1" exit 1 ;; esac done if [[ -z "$ISSUE_NUMBER" ]]; then echo "Error: Issue number is required (-i)" exit 1 fi detect_platform if [[ "$PLATFORM" == "github" ]]; then gh issue view "$ISSUE_NUMBER" elif [[ "$PLATFORM" == "gitea" ]]; then if command -v tea >/dev/null 2>&1; then if tea issue "$ISSUE_NUMBER"; then exit 0 fi echo "Warning: tea issue view failed, trying Gitea API fallback..." >&2 fi gitea_issue_view_api else echo "Error: Unknown platform" exit 1 fi