build: add server-rs local dev scripts

This commit is contained in:
2026-04-21 01:41:31 +08:00
parent ec04790848
commit 440d60d563
5 changed files with 100 additions and 3 deletions

52
server-rs/scripts/dev.ps1 Normal file
View File

@@ -0,0 +1,52 @@
[CmdletBinding()]
param(
[Alias("h")]
[switch]$Help,
[string]$ApiHost = "127.0.0.1",
[int]$Port = 3000,
[string]$Log = "info,tower_http=info"
)
$ErrorActionPreference = "Stop"
function Write-Usage {
@(
'Usage:'
' ./server-rs/scripts/dev.ps1'
' ./server-rs/scripts/dev.ps1 -ApiHost 0.0.0.0 -Port 3100 -Log "debug,tower_http=debug"'
''
'Notes:'
' 1. Set default local env vars for the Rust api-server'
' 2. Start Axum with cargo run -p api-server'
' 3. This script only covers the api-server local dev loop'
) -join [Environment]::NewLine
}
if ($Help) {
Write-Usage
exit 0
}
$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
$serverRsDir = Split-Path -Parent $scriptDir
if (-not (Test-Path (Join-Path $serverRsDir "Cargo.toml"))) {
throw "Missing server-rs/Cargo.toml, cannot start local dev script."
}
$env:GENARRATIVE_API_HOST = $ApiHost
$env:GENARRATIVE_API_PORT = "$Port"
$env:GENARRATIVE_API_LOG = $Log
Write-Host "[server-rs:dev] working dir: $serverRsDir"
Write-Host "[server-rs:dev] GENARRATIVE_API_HOST=$($env:GENARRATIVE_API_HOST)"
Write-Host "[server-rs:dev] GENARRATIVE_API_PORT=$($env:GENARRATIVE_API_PORT)"
Write-Host "[server-rs:dev] GENARRATIVE_API_LOG=$($env:GENARRATIVE_API_LOG)"
Push-Location $serverRsDir
try {
cargo run -p api-server --manifest-path (Join-Path $serverRsDir "Cargo.toml")
}
finally {
Pop-Location
}

41
server-rs/scripts/dev.sh Normal file
View File

@@ -0,0 +1,41 @@
#!/usr/bin/env bash
set -euo pipefail
usage() {
cat <<'EOF'
用法:
./server-rs/scripts/dev.sh
GENARRATIVE_API_HOST=0.0.0.0 GENARRATIVE_API_PORT=3100 ./server-rs/scripts/dev.sh
说明:
1. 为 Rust `api-server` 注入本地开发默认环境变量
2. 使用 `cargo run -p api-server` 启动 Axum 服务
3. 当前只覆盖 `api-server` 本地开发链路,不包含 SpacetimeDB
EOF
}
if [[ "${1:-}" == "-h" || "${1:-}" == "--help" ]]; then
usage
exit 0
fi
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
SERVER_RS_DIR="$(cd -- "${SCRIPT_DIR}/.." && pwd)"
if [[ ! -f "${SERVER_RS_DIR}/Cargo.toml" ]]; then
echo "[server-rs:dev] 未找到 ${SERVER_RS_DIR}/Cargo.toml无法启动本地开发脚本。" >&2
exit 1
fi
export GENARRATIVE_API_HOST="${GENARRATIVE_API_HOST:-127.0.0.1}"
export GENARRATIVE_API_PORT="${GENARRATIVE_API_PORT:-3000}"
export GENARRATIVE_API_LOG="${GENARRATIVE_API_LOG:-info,tower_http=info}"
echo "[server-rs:dev] 工作目录: ${SERVER_RS_DIR}"
echo "[server-rs:dev] GENARRATIVE_API_HOST=${GENARRATIVE_API_HOST}"
echo "[server-rs:dev] GENARRATIVE_API_PORT=${GENARRATIVE_API_PORT}"
echo "[server-rs:dev] GENARRATIVE_API_LOG=${GENARRATIVE_API_LOG}"
cd "${SERVER_RS_DIR}"
cargo run -p api-server --manifest-path "${SERVER_RS_DIR}/Cargo.toml"