CoolFace
Apppublic

devin15/cursor2api-rust

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
build.ps1126 linesDownload Raw Back to scripts
1# 参数处理2param(3    [switch]$Static,4    [switch]$Help,5    [ValidateSet("x86_64", "aarch64", "i686")]6    [string]$Architecture7)8 9# 设置错误时停止执行10$ErrorActionPreference = "Stop"11 12# 颜色输出函数13function Write-Info  { param($Message) Write-Host "[INFO] $Message" -ForegroundColor Blue }14function Write-Warn  { param($Message) Write-Host "[WARN] $Message" -ForegroundColor Yellow }15function Write-Error { param($Message) Write-Host "[ERROR] $Message" -ForegroundColor Red; exit 1 }16 17# 检查必要的工具18function Check-Requirements {19    $tools = @("cargo", "protoc", "npm", "node")20    $missing = @()21 22    foreach ($tool in $tools) {23        if (-not (Get-Command $tool -ErrorAction SilentlyContinue)) {24            $missing += $tool25        }26    }27 28    if ($missing.Count -gt 0) {29        Write-Error "缺少必要工具: $($missing -join ', ')"30    }31}32 33# 帮助信息34function Show-Help {35    Write-Host @"36用法: $(Split-Path $MyInvocation.ScriptName -Leaf) [选项]37 38选项:39  -Static        使用静态链接(默认动态链接)40  -Help          显示此帮助信息41 42不带参数时使用默认配置构建43"@44}45 46# 构建函数47function Build-Target {48    param (49        [string]$Target,50        [string]$RustFlags51    )52 53    Write-Info "正在构建 $Target..."54 55    # 设置环境变量56    $env:RUSTFLAGS = $RustFlags57 58    # 构建59    if ($Target -ne (rustc -Vv | Select-String "host: (.*)" | ForEach-Object { $_.Matches.Groups[1].Value })) {60        cargo build --target $Target --release61    } else {62        cargo build --release63    }64 65    # 移动编译产物到 release 目录66    $binaryName = "cursor-api"67    if ($Static) {68        $binaryName += "-static"69    }70 71    $binaryPath = if ($Target -eq (rustc -Vv | Select-String "host: (.*)" | ForEach-Object { $_.Matches.Groups[1].Value })) {72        "target/release/cursor-api.exe"73    } else {74        "target/$Target/release/cursor-api.exe"75    }76 77    if (Test-Path $binaryPath) {78        Copy-Item $binaryPath "release/$binaryName-$Target.exe"79        Write-Info "完成构建 $Target"80    } else {81        Write-Warn "构建产物未找到: $Target"82        Write-Warn "查找路径: $binaryPath"83        Write-Warn "当前目录内容:"84        Get-ChildItem -Recurse target/85        return $false86    }87 88    return $true89}90 91if ($Help) {92    Show-Help93    exit 094}95 96# 检查依赖97Check-Requirements98 99# 创建 release 目录100New-Item -ItemType Directory -Force -Path release | Out-Null101 102# 设置静态链接标志103$rustFlags = ""104if ($Static) {105    $rustFlags = "-C target-feature=+crt-static"106}107 108# 获取目标架构109$arch = if ($Architecture) {110    $Architecture111} else {112    switch ($env:PROCESSOR_ARCHITECTURE) {113        "AMD64" { "x86_64" }114        "ARM64" { "aarch64" }115        "X86" { "i686" }116        default { Write-Error "不支持的架构: $env:PROCESSOR_ARCHITECTURE" }117    }118}119$target = "$arch-pc-windows-msvc"120 121Write-Info "开始构建..."122if (-not (Build-Target -Target $target -RustFlags $rustFlags)) {123    Write-Error "构建失败"124}125 126Write-Info "构建完成!"