Files
Genarrative/server-rs/scripts/spacetime-dev.sh
2026-04-21 19:17:31 +08:00

54 lines
2.0 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
set -euo pipefail
# 当前阶段只负责启动本地 standalone SpacetimeDB先把服务器进程和数据目录口径固定下来不提前耦合 publish 流程。
usage() {
cat <<'EOF'
用法:
./server-rs/scripts/spacetime-dev.sh
GENARRATIVE_SPACETIME_PORT=3101 ./server-rs/scripts/spacetime-dev.sh
说明:
1. 启动 Genarrative Rust 后端使用的本地 standalone SpacetimeDB
2. 默认把本地数据目录放到 `server-rs/.spacetimedb/local`
3. 默认端口使用 `3000`,与 `spacetime` CLI 的 local server 昵称保持一致
4. 当前阶段已具备 `crates/spacetime-module` scaffold但暂不自动 publish
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)"
LISTEN_HOST="${GENARRATIVE_SPACETIME_HOST:-127.0.0.1}"
PORT="${GENARRATIVE_SPACETIME_PORT:-3000}"
ROOT_DIR="${GENARRATIVE_SPACETIME_ROOT_DIR:-${SERVER_RS_DIR}/.spacetimedb/local}"
if [[ ! -f "${SERVER_RS_DIR}/crates/spacetime-module/README.md" ]]; then
echo "[server-rs:spacetime-dev] 未找到 crates/spacetime-module/README.md无法启动本地 SpacetimeDB 脚本。" >&2
exit 1
fi
if ! command -v spacetime >/dev/null 2>&1; then
echo "[server-rs:spacetime-dev] 缺少 spacetime CLI。" >&2
echo "[server-rs:spacetime-dev] 安装文档: https://spacetimedb.com/install" >&2
echo "[server-rs:spacetime-dev] Linux/macOS 安装命令: curl -sSf https://install.spacetimedb.com | sh" >&2
exit 1
fi
mkdir -p "${ROOT_DIR}"
echo "[server-rs:spacetime-dev] 工作目录: ${SERVER_RS_DIR}"
echo "[server-rs:spacetime-dev] 数据目录: ${ROOT_DIR}"
echo "[server-rs:spacetime-dev] 监听地址: ${LISTEN_HOST}:${PORT}"
echo "[server-rs:spacetime-dev] 模式: standalone"
echo "[server-rs:spacetime-dev] 说明: 当前阶段已落 crate scaffold但仍不自动 publish crates/spacetime-module"
cd "${SERVER_RS_DIR}"
spacetime --root-dir "${ROOT_DIR}" start --edition standalone --listen-addr "${LISTEN_HOST}:${PORT}"