Files
lib-privatebin/scripts/gitea_upload.ps1

44 lines
1.4 KiB
PowerShell

param(
[Parameter(Mandatory=$true)][string]$Server,
[Parameter(Mandatory=$true)][string]$Owner,
[Parameter(Mandatory=$true)][string]$Repo,
[Parameter(Mandatory=$true)][string]$Token,
[Parameter(Mandatory=$true)][string]$ZipPath
)
$ErrorActionPreference = 'Stop'
if (-not (Test-Path -LiteralPath $ZipPath)) {
throw "ZIP not found: $ZipPath"
}
$headers = @{ Authorization = "token $Token" }
$latestUrl = "$Server/api/v1/repos/$Owner/$Repo/releases/latest"
$latest = Invoke-RestMethod -Headers $headers -Method GET -Uri $latestUrl
if (-not $latest -or -not $latest.id) {
throw "Failed to get latest release from $latestUrl"
}
$rid = [string]$latest.id
$name = [System.IO.Path]::GetFileName($ZipPath)
$escapedName = [System.Uri]::EscapeDataString($name)
$uploadUrl = "$Server/api/v1/repos/$Owner/$Repo/releases/$rid/assets?name=$escapedName"
Write-Host "Latest release id: $rid"
Write-Host "Uploading $name to $uploadUrl"
# Use Invoke-WebRequest multipart form upload
$form = @{ attachment = Get-Item -LiteralPath $ZipPath }
$resp = Invoke-WebRequest -Headers $headers -Method Post -Uri $uploadUrl -Form $form
if ($resp.StatusCode -ge 200 -and $resp.StatusCode -lt 300) {
Write-Host "Upload successful (HTTP $($resp.StatusCode))"
} else {
Write-Host "Upload failed (HTTP $($resp.StatusCode))" -ForegroundColor Red
if ($resp.Content) { Write-Host $resp.Content }
exit 1
}