scripts/Unlist-OldPackages.ps1

#Requires -Version 5.1
<#
.SYNOPSIS
    Unlist older pwxe versions on NuGet.org to retain only the latest 2 versions (1.7.0 & 1.6.4).
.PARAMETER NuGetApiKey
    NuGet.org API Key with unlist permissions.
#>

[CmdletBinding()]
param(
    [string]$NuGetApiKey
)

[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$OutputEncoding = [System.Text.Encoding]::UTF8

Write-Host "=== pwxe NuGet Eski Sürümleri Listeden Kaldırma (Unlist) ===" -ForegroundColor Cyan

if (-not $NuGetApiKey) {
    if ($env:NUGET_API_KEY) {
        $NuGetApiKey = $env:NUGET_API_KEY
    } else {
        $NuGetApiKey = Read-Host "Lütfen NuGet.org API Anahtarınızı giriniz"
    }
}

if (-not $NuGetApiKey) {
    Write-Host "[HATA] NuGet API Anahtarı girilmedi. İşlem iptal edildi." -ForegroundColor Red
    exit 1
}

$olderVersions = @('1.6.0', '1.6.1', '1.6.2', '1.6.3')
$protectedVersions = @('1.6.4', '1.7.0')

Write-Host "Korumaya alınan son 2 sürüm: $($protectedVersions -join ', ')" -ForegroundColor Green

foreach ($v in $olderVersions) {
    Write-Host "`n--> NuGet'ten kaldırılıyor (Unlist): pwxe $v..." -ForegroundColor Yellow
    dotnet nuget delete pwxe $v --source https://api.nuget.org/v3/index.json --api-key $NuGetApiKey --non-interactive
    if ($LASTEXITCODE -eq 0) {
        Write-Host "[OK] pwxe $v başarıyla listeden gizlendi (unlisted)." -ForegroundColor Green
    } else {
        Write-Host "[UYARI] pwxe $v kaldırılamadı (zaten gizlenmiş veya hata kodu: $LASTEXITCODE)." -ForegroundColor Yellow
    }
}

Write-Host "`nİşlem tamamlandı. Yalnızca 1.7.0 ve 1.6.4 sürümleri listelenmektedir." -ForegroundColor Green