mirror of
https://github.com/AstrBotDevs/AstrBot
synced 2026-07-01 01:10:21 +08:00
87 lines
2.2 KiB
PowerShell
87 lines
2.2 KiB
PowerShell
# deploy-cli.ps1 - Install astrbot with uv on Windows PowerShell.
|
|
|
|
#Requires -Version 7.0
|
|
|
|
$ErrorActionPreference = 'Stop'
|
|
|
|
$UseColor = [string]::IsNullOrEmpty($env:NO_COLOR) -and [Console]::IsOutputRedirected -eq $false
|
|
|
|
function Write-Status {
|
|
param(
|
|
[string]$Prefix,
|
|
[string]$Message,
|
|
[string]$Color
|
|
)
|
|
|
|
if ($UseColor) {
|
|
Write-Host "$Prefix $Message" -ForegroundColor $Color
|
|
} else {
|
|
Write-Host "$Prefix $Message"
|
|
}
|
|
}
|
|
|
|
function Info { Write-Status "[INFO]" "$args" "Cyan" }
|
|
function Warn { Write-Status "[WARN]" "$args" "Yellow" }
|
|
function Ok { Write-Status "[OK]" "$args" "Green" }
|
|
function Err { Write-Status "[ERROR]" "$args" "Red" }
|
|
|
|
function Test-Command {
|
|
param([string]$Name)
|
|
$null = Get-Command $Name -ErrorAction SilentlyContinue
|
|
return $?
|
|
}
|
|
|
|
function Update-UvPath {
|
|
$candidateDirs = @()
|
|
|
|
if ($HOME) {
|
|
$candidateDirs += Join-Path $HOME ".local\bin"
|
|
}
|
|
if ($env:USERPROFILE) {
|
|
$candidateDirs += Join-Path $env:USERPROFILE ".local\bin"
|
|
}
|
|
if ($env:LOCALAPPDATA) {
|
|
$candidateDirs += Join-Path $env:LOCALAPPDATA "uv"
|
|
}
|
|
|
|
foreach ($dir in $candidateDirs) {
|
|
if ((Test-Path $dir) -and (($env:PATH -split ';') -notcontains $dir)) {
|
|
$env:PATH = "$dir;$env:PATH"
|
|
}
|
|
}
|
|
}
|
|
|
|
function Install-Uv {
|
|
Info "uv was not found. Installing uv..."
|
|
|
|
$tempScript = [System.IO.Path]::GetTempFileName() + ".ps1"
|
|
try {
|
|
Invoke-WebRequest -Uri "https://astral.sh/uv/install.ps1" -OutFile $tempScript -UseBasicParsing
|
|
& $tempScript
|
|
Update-UvPath
|
|
} catch {
|
|
Err "Failed to install uv."
|
|
Err "Please install uv manually: https://docs.astral.sh/uv/getting-started/installation/"
|
|
exit 1
|
|
} finally {
|
|
Remove-Item $tempScript -ErrorAction SilentlyContinue
|
|
}
|
|
}
|
|
|
|
if (-not (Test-Command "uv")) {
|
|
Install-Uv
|
|
}
|
|
|
|
Update-UvPath
|
|
|
|
if (-not (Test-Command "uv")) {
|
|
Err "uv was not found after installation."
|
|
Err "Please install uv manually: https://docs.astral.sh/uv/getting-started/installation/"
|
|
exit 1
|
|
}
|
|
|
|
Ok (& uv --version)
|
|
Info "Installing AstrBot with Python 3.12..."
|
|
uv tool install --python 3.12 astrbot
|
|
Ok "AstrBot has been installed."
|