#!/bin/bash
# pr-list.sh - List pull requests on Gitea or GitHub
# Usage: pr-list.sh [-s state] [-l label] [-a author]

set -e

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/detect-platform.sh"

# Default values
STATE="open"
LABEL=""
AUTHOR=""
LIMIT=30

usage() {
    cat <<EOF
Usage: $(basename "$0") [OPTIONS]

List pull requests from the current repository (Gitea or GitHub).

Options:
    -s, --state STATE       Filter by state: open, closed, merged, all (default: open)
    -l, --label LABEL       Filter by label
    -a, --author USER       Filter by author
    -n, --limit N           Maximum PRs to show (default: 30)
    -h, --help              Show this help message

Examples:
    $(basename "$0")                          # List open PRs
    $(basename "$0") -s all                   # All PRs
    $(basename "$0") -s merged -a username    # Merged PRs by user
EOF
    exit 1
}

# Parse arguments
while [[ $# -gt 0 ]]; do
    case $1 in
        -s|--state)
            STATE="$2"
            shift 2
            ;;
        -l|--label)
            LABEL="$2"
            shift 2
            ;;
        -a|--author)
            AUTHOR="$2"
            shift 2
            ;;
        -n|--limit)
            LIMIT="$2"
            shift 2
            ;;
        -h|--help)
            usage
            ;;
        *)
            echo "Unknown option: $1" >&2
            usage
            ;;
    esac
done

PLATFORM=$(detect_platform)

case "$PLATFORM" in
    github)
        CMD="gh pr list --state $STATE --limit $LIMIT"
        [[ -n "$LABEL" ]] && CMD="$CMD --label \"$LABEL\""
        [[ -n "$AUTHOR" ]] && CMD="$CMD --author \"$AUTHOR\""
        eval "$CMD"
        ;;
    gitea)
        # tea pr list - note: tea uses 'pulls' subcommand in some versions
        CMD="tea pr list --state $STATE --limit $LIMIT"

        # tea filtering may be limited
        if [[ -n "$LABEL" ]]; then
            echo "Note: Label filtering may require manual review for Gitea" >&2
        fi
        if [[ -n "$AUTHOR" ]]; then
            echo "Note: Author filtering may require manual review for Gitea" >&2
        fi

        eval "$CMD"
        ;;
    *)
        echo "Error: Could not detect git platform" >&2
        exit 1
        ;;
esac
