# pr-list.ps1 - List pull requests on Gitea or GitHub
# Usage: .\pr-list.ps1 [-State state] [-Label label] [-Author author]

[CmdletBinding()]
param(
    [Alias("s")]
    [ValidateSet("open", "closed", "merged", "all")]
    [string]$State = "open",

    [Alias("l")]
    [string]$Label,

    [Alias("a")]
    [string]$Author,

    [Alias("n")]
    [int]$Limit = 100,

    [Alias("h")]
    [switch]$Help
)

$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
. "$ScriptDir\detect-platform.ps1"

function Show-Usage {
    @"
Usage: pr-list.ps1 [OPTIONS]

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

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

Examples:
    .\pr-list.ps1                              # List open PRs
    .\pr-list.ps1 -s all                       # All PRs
    .\pr-list.ps1 -s merged -a username        # Merged PRs by user
"@
    exit 1
}

if ($Help) {
    Show-Usage
}

$platform = Get-GitPlatform

switch ($platform) {
    "github" {
        $cmd = @("gh", "pr", "list", "--state", $State, "--limit", $Limit)
        if ($Label) { $cmd += @("--label", $Label) }
        if ($Author) { $cmd += @("--author", $Author) }
        & $cmd[0] $cmd[1..($cmd.Length-1)]
    }
    "gitea" {
        $repoArgs = @(Get-GiteaRepoArgs)
        if ($repoArgs.Length -eq 0) {
            Write-Error "Could not resolve Gitea repo/login for remote host"
            exit 1
        }
        $cmd = @("tea", "pr", "list", "--state", $State, "--limit", $Limit)

        if ($Label) {
            Write-Warning "Label filtering may require manual review for Gitea"
        }
        if ($Author) {
            Write-Warning "Author filtering may require manual review for Gitea"
        }

        $cmd += $repoArgs
        & $cmd[0] $cmd[1..($cmd.Length-1)]
    }
    default {
        Write-Error "Could not detect git platform"
        exit 1
    }
}
