#!/bin/bash
# pr-review.sh - Review a pull request on GitHub or Gitea
# Usage: pr-review.sh -n <pr_number> -a <action> [-c <comment>]

set -e

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

# Parse arguments
PR_NUMBER=""
ACTION=""
COMMENT=""

while [[ $# -gt 0 ]]; do
    case $1 in
        -n|--number)
            PR_NUMBER="$2"
            shift 2
            ;;
        -a|--action)
            ACTION="$2"
            shift 2
            ;;
        -c|--comment)
            COMMENT="$2"
            shift 2
            ;;
        -h|--help)
            echo "Usage: pr-review.sh -n <pr_number> -a <action> [-c <comment>]"
            echo ""
            echo "Options:"
            echo "  -n, --number   PR number (required)"
            echo "  -a, --action   Review action: approve, request-changes, comment (required)"
            echo "  -c, --comment  Review comment (required for request-changes)"
            echo "  -h, --help     Show this help"
            exit 0
            ;;
        *)
            echo "Unknown option: $1"
            exit 1
            ;;
    esac
done

if [[ -z "$PR_NUMBER" ]]; then
    echo "Error: PR number is required (-n)"
    exit 1
fi

if [[ -z "$ACTION" ]]; then
    echo "Error: Action is required (-a): approve, request-changes, comment"
    exit 1
fi

detect_platform >/dev/null

if [[ "$PLATFORM" == "github" ]]; then
    case $ACTION in
        approve)
            gh pr review "$PR_NUMBER" --approve ${COMMENT:+--body "$COMMENT"}
            echo "Approved GitHub PR #$PR_NUMBER"
            ;;
        request-changes)
            if [[ -z "$COMMENT" ]]; then
                echo "Error: Comment required for request-changes"
                exit 1
            fi
            gh pr review "$PR_NUMBER" --request-changes --body "$COMMENT"
            echo "Requested changes on GitHub PR #$PR_NUMBER"
            ;;
        comment)
            if [[ -z "$COMMENT" ]]; then
                echo "Error: Comment required"
                exit 1
            fi
            gh pr review "$PR_NUMBER" --comment --body "$COMMENT"
            echo "Added review comment to GitHub PR #$PR_NUMBER"
            ;;
        *)
            echo "Error: Unknown action: $ACTION"
            exit 1
            ;;
    esac
elif [[ "$PLATFORM" == "gitea" ]]; then
    case $ACTION in
        approve)
            tea pr approve "$PR_NUMBER" $(get_gitea_repo_args) ${COMMENT:+--comment "$COMMENT"}
            echo "Approved Gitea PR #$PR_NUMBER"
            ;;
        request-changes)
            if [[ -z "$COMMENT" ]]; then
                echo "Error: Comment required for request-changes"
                exit 1
            fi
            tea pr reject "$PR_NUMBER" $(get_gitea_repo_args) --comment "$COMMENT"
            echo "Requested changes on Gitea PR #$PR_NUMBER"
            ;;
        comment)
            if [[ -z "$COMMENT" ]]; then
                echo "Error: Comment required"
                exit 1
            fi
            tea pr comment "$PR_NUMBER" "$COMMENT" $(get_gitea_repo_args)
            echo "Added comment to Gitea PR #$PR_NUMBER"
            ;;
        *)
            echo "Error: Unknown action: $ACTION"
            exit 1
            ;;
    esac
else
    echo "Error: Unknown platform"
    exit 1
fi
