文件

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] 远端仓库、环境与数据合同通过"