51 lines
1.3 KiB
Bash
51 lines
1.3 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
# 标准启动与验证入口:一条命令完成 依赖同步 -> 基础验证 -> 打印启动命令。
|
|
# 每轮会话用同一条路径启动,不靠记忆拼命令。
|
|
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
cd "$ROOT_DIR"
|
|
|
|
WIN_ROOT_DIR=""
|
|
if command -v cmd.exe >/dev/null 2>&1 && command -v pwd >/dev/null 2>&1; then
|
|
WIN_ROOT_DIR="$(pwd -W 2>/dev/null | sed 's#/#\\#g' || true)"
|
|
fi
|
|
|
|
run_in_workspace() {
|
|
if [ -n "$WIN_ROOT_DIR" ]; then
|
|
cmd.exe //C "pushd $WIN_ROOT_DIR && $*"
|
|
else
|
|
"$@"
|
|
fi
|
|
}
|
|
|
|
if [ ! -f go.mod ]; then
|
|
echo "ERROR: 阶段 0 骨架未建立(缺 go.mod)。"
|
|
echo " 先领取 tasks.md 的 T-001(初始化 go module 与双子命令骨架)。"
|
|
exit 2
|
|
fi
|
|
|
|
START_CMD=(go run . -mode server -config config.yaml.example)
|
|
|
|
echo "==> 当前目录: $PWD"
|
|
|
|
echo "==> 同步依赖"
|
|
run_in_workspace go mod download
|
|
|
|
echo "==> 运行基础验证"
|
|
run_in_workspace go test ./...
|
|
|
|
echo "==> 启动命令"
|
|
printf ' %q' "${START_CMD[@]}"
|
|
printf '\n'
|
|
|
|
if [ "${RUN_START_COMMAND:-0}" = "1" ]; then
|
|
echo "==> 启动应用"
|
|
run_in_workspace "${START_CMD[@]}"
|
|
fi
|
|
|
|
echo "如需直接启动应用:RUN_START_COMMAND=1 ./init.sh"
|
|
echo "如果基础验证失败,先修基线,不要在坏的起点上叠新功能。"
|