litellm / scripts /sync-hf-secrets.ps1
alchoholpad's picture
full repo sync
5b54ed8 verified
Raw
History Blame Contribute Delete
2 kB
param(
[Parameter(Mandatory = $true)]
[string]$SpaceId,
[string]$Email = '',
[string]$HfAccountHelper = (Join-Path $env:USERPROFILE 'Downloads\mainframe\hf-account.ps1'),
[string]$SecretsPath = ''
)
$ErrorActionPreference = 'Stop'
if ([string]::IsNullOrWhiteSpace($SecretsPath)) {
$SecretsPath = Join-Path (Split-Path -Parent $PSScriptRoot) 'config\local.secrets.json'
}
if (-not (Test-Path -LiteralPath $SecretsPath)) {
throw "Local secret file not found: $SecretsPath"
}
$secrets = Get-Content -LiteralPath $SecretsPath -Raw | ConvertFrom-Json
$secretLines = New-Object System.Collections.Generic.List[string]
foreach ($property in $secrets.PSObject.Properties) {
if ([string]::IsNullOrWhiteSpace([string]$property.Value)) {
continue
}
$secretLines.Add("$($property.Name)=$($property.Value)") | Out-Null
}
if ($secretLines.Count -eq 0) {
throw 'No secrets found to sync.'
}
$tempPath = Join-Path ([System.IO.Path]::GetTempPath()) ("hf-litellm-secrets-{0}.env" -f ([guid]::NewGuid().ToString('N')))
try {
Set-Content -LiteralPath $tempPath -Value $secretLines -Encoding UTF8
attrib +h $tempPath | Out-Null
if (-not [string]::IsNullOrWhiteSpace($Email) -and (Test-Path -LiteralPath $HfAccountHelper)) {
& powershell.exe -NoProfile -ExecutionPolicy Bypass -File $HfAccountHelper run $Email spaces secrets add $SpaceId --secrets-file $tempPath --format json | Out-Null
} else {
& hf spaces secrets add $SpaceId --secrets-file $tempPath --format json | Out-Null
}
if ($LASTEXITCODE -ne 0) {
throw "hf spaces secrets add failed with exit code $LASTEXITCODE"
}
} finally {
Remove-Item -LiteralPath $tempPath -Force -ErrorAction SilentlyContinue
}
[pscustomobject]@{
spaceId = $SpaceId
profile = if ([string]::IsNullOrWhiteSpace($Email)) { 'hf-cli' } else { $Email }
secretsSynced = $secretLines.Count
} | ConvertTo-Json