build: add server-rs local dev scripts
This commit is contained in:
@@ -115,7 +115,8 @@
|
||||
|
||||
### 基础工程脚本
|
||||
|
||||
- [ ] 新增本地开发脚本
|
||||
- [x] 新增本地开发脚本
|
||||
交付物:[../server-rs/scripts/dev.ps1](../server-rs/scripts/dev.ps1)、[../server-rs/scripts/dev.sh](../server-rs/scripts/dev.sh)
|
||||
- [ ] 新增测试脚本
|
||||
- [ ] 新增 lint / fmt / clippy / check 脚本
|
||||
- [ ] 新增 smoke 脚本
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
## 2. 当前阶段说明
|
||||
|
||||
当前目录已经完成以下二十四项初始化:
|
||||
当前目录已经完成以下二十六项初始化:
|
||||
|
||||
1. 为新后端预留正式目录并把路径固定到仓库结构中。
|
||||
2. 创建虚拟 workspace `Cargo.toml`,后续 package 会逐项挂入。
|
||||
@@ -40,10 +40,12 @@
|
||||
22. 创建 `packages/platform-llm/` 目录占位,固定大模型平台适配 package 落位。
|
||||
23. 创建 `packages/spacetime-client/` 目录占位,固定 SpacetimeDB 客户端适配 package 落位。
|
||||
24. 创建 `packages/tests-support/` 目录占位,固定测试支撑共享 package 落位。
|
||||
25. 创建 `scripts/dev.ps1`,固定 Windows 本地开发入口。
|
||||
26. 创建 `scripts/dev.sh`,固定 Unix-like 本地开发入口。
|
||||
|
||||
后续任务会继续在本目录内按顺序补齐:
|
||||
|
||||
1. `scripts/*`
|
||||
1. 测试、lint、smoke 与 SpacetimeDB 本地脚本
|
||||
|
||||
## 3. 已冻结边界
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
3. `with_state` 共享状态注入
|
||||
4. 中间件挂载
|
||||
5. `/healthz`、`/api/*`、SSE 与静态资源兼容层装配
|
||||
6. 由 `../../scripts/dev.ps1` 与 `../../scripts/dev.sh` 驱动的本地开发启动链路
|
||||
|
||||
## 2. 当前阶段说明
|
||||
|
||||
|
||||
52
server-rs/scripts/dev.ps1
Normal file
52
server-rs/scripts/dev.ps1
Normal 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
41
server-rs/scripts/dev.sh
Normal 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"
|
||||
Reference in New Issue
Block a user