feature-flag-ai / scripts /deploy_to_hf.ps1
Mahakii's picture
Deploy to Hugging Face Space
f8dadcb
Raw
History Blame Contribute Delete
2.57 kB
param(
[Parameter(Mandatory = $true)]
[string]$SpaceId,
[string]$Token = $env:HF_TOKEN,
[string]$RemoteName = "hf",
[string]$CommitMessage = "Deploy to Hugging Face Space"
)
$ErrorActionPreference = "Stop"
if (-not $Token) {
if (Test-Path ".env") {
$tokenLine = Get-Content ".env" | Where-Object { $_ -match "^HF_TOKEN=" } | Select-Object -First 1
if ($tokenLine) {
$Token = ($tokenLine -replace "^HF_TOKEN=", "").Trim()
$Token = $Token.Trim('"').Trim("'")
}
}
}
if (-not $Token) {
throw "HF token not provided. Set HF_TOKEN, keep HF_TOKEN in .env, or pass -Token."
}
if (-not (Test-Path ".git")) {
throw "Run this script from repository root (git repo required)."
}
Write-Host "Logging in to Hugging Face..."
$hfCli = ""
if (Get-Command hf -ErrorAction SilentlyContinue) {
$hfCli = "hf"
} elseif (Test-Path ".venv/Scripts/hf.exe") {
$hfCli = ".venv/Scripts/hf.exe"
} else {
throw "hf CLI not found. Install with: c:/Users/Mahak/FeatureFlag/.venv/Scripts/python.exe -m pip install huggingface_hub"
}
& $hfCli auth login --token $Token --add-to-git-credential --force | Out-Null
if ($LASTEXITCODE -ne 0) {
throw "Hugging Face login failed. Verify HF_TOKEN is valid and has write scope."
}
$hfUrl = "https://huggingface.co/spaces/$SpaceId"
$existingRemote = git remote | Where-Object { $_ -eq $RemoteName }
if (-not $existingRemote) {
Write-Host "Adding remote '$RemoteName' => $hfUrl"
git remote add $RemoteName $hfUrl
if ($LASTEXITCODE -ne 0) {
throw "Failed to add git remote '$RemoteName'."
}
} else {
Write-Host "Remote '$RemoteName' already exists. Updating URL => $hfUrl"
git remote set-url $RemoteName $hfUrl
if ($LASTEXITCODE -ne 0) {
throw "Failed to update git remote '$RemoteName'."
}
}
Write-Host "Committing current changes (if any)..."
git add .
if ($LASTEXITCODE -ne 0) {
throw "Failed to stage changes."
}
git diff --cached --quiet
if ($LASTEXITCODE -ne 0) {
git commit -m $CommitMessage | Out-Null
if ($LASTEXITCODE -ne 0) {
throw "Failed to create commit."
}
Write-Host "Created commit: $CommitMessage"
} else {
Write-Host "No staged changes to commit."
}
Write-Host "Pushing to Hugging Face Space..."
git push $RemoteName HEAD:main --force
if ($LASTEXITCODE -ne 0) {
throw "Push failed. Ensure the Space exists and your token has write access."
}
Write-Host "Deployment pushed successfully."
Write-Host "Space URL: https://huggingface.co/spaces/$SpaceId"