28 行
881 B
Bash
可执行文件
28 行
881 B
Bash
可执行文件
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
fail() {
|
|
echo "[remote-preflight][ERROR] $1" >&2
|
|
exit 1
|
|
}
|
|
|
|
for key in REMOTE_DIR REMOTE_ENV_FILE COMPOSE_FILE POSTGRES_DATA_DIR STORAGE_HOST_DIR DEPLOY_DATA_MODE SYNC_ENV; do
|
|
[[ -n "${!key:-}" ]] || fail "缺少 $key"
|
|
done
|
|
|
|
if [[ "$DEPLOY_DATA_MODE" == "existing" ]]; then
|
|
[[ -d "$REMOTE_DIR" \
|
|
&& -f "$REMOTE_DIR/server/package.json" \
|
|
&& -f "$REMOTE_DIR/$COMPOSE_FILE" ]] \
|
|
|| fail "existing 模式要求 REMOTE_DIR 是现存仓库根目录"
|
|
[[ -f "$POSTGRES_DATA_DIR/PG_VERSION" && -d "$STORAGE_HOST_DIR" ]] \
|
|
|| fail "existing 模式的数据目录合同未满足"
|
|
fi
|
|
|
|
if [[ "$SYNC_ENV" == "0" ]]; then
|
|
[[ -f "$REMOTE_ENV_FILE" && ! -L "$REMOTE_ENV_FILE" ]] \
|
|
|| fail "SYNC_ENV=0 要求同步前已有普通远端 .env 文件"
|
|
fi
|
|
|
|
echo "[remote-preflight][PASS] 远端仓库、环境与数据合同通过"
|