Files
multica/scripts/selfhost-config.test.sh
YOMXXX bfb7c85491 fix(selfhost): derive local port URLs from env (MUL-2506) (#2939)
* fix(selfhost): derive local port URLs from env

* fix(selfhost): derive local script URLs
2026-05-24 13:05:53 +08:00

88 lines
2.5 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "$ROOT_DIR"
require_config() {
local config=$1
local expected=$2
if ! grep -Fq "$expected" <<<"$config"; then
echo "Missing expected docker compose config value:"
echo " $expected"
exit 1
fi
}
require_env() {
local output=$1
local expected=$2
if ! grep -Fxq "$expected" <<<"$output"; then
echo "Missing expected derived env value:"
echo " $expected"
echo "Observed:"
echo "$output"
exit 1
fi
}
config="$(
FRONTEND_PORT=3100 BACKEND_PORT=9100 docker compose \
--env-file .env.example \
-f docker-compose.selfhost.yml \
config
)"
require_config "$config" 'published: "3100"'
require_config "$config" 'published: "9100"'
require_config "$config" 'FRONTEND_ORIGIN: http://localhost:3100'
require_config "$config" 'GOOGLE_REDIRECT_URI: http://localhost:3100/auth/callback'
require_config "$config" 'MULTICA_APP_URL: http://localhost:3100'
for script in scripts/dev.sh scripts/check.sh; do
if ! grep -Fq '. scripts/local-env.sh' "$script"; then
echo "$script must source scripts/local-env.sh for shared local env derivation."
exit 1
fi
done
tmp_env="$(mktemp)"
trap 'rm -f "$tmp_env"' EXIT
sed 's/^FRONTEND_PORT=.*/FRONTEND_PORT=3100/' .env.example >"$tmp_env"
printf '\nBACKEND_PORT=9100\n' >>"$tmp_env"
local_env="$(
env -i PATH="$PATH" bash -c '
set -euo pipefail
env_file=$1
set -a
# shellcheck disable=SC1090
. "$env_file"
set +a
# shellcheck disable=SC1091
. scripts/local-env.sh
printf "%s\n" \
"PORT=${PORT}" \
"FRONTEND_PORT=${FRONTEND_PORT}" \
"FRONTEND_ORIGIN=${FRONTEND_ORIGIN}" \
"MULTICA_APP_URL=${MULTICA_APP_URL}" \
"GOOGLE_REDIRECT_URI=${GOOGLE_REDIRECT_URI}" \
"MULTICA_SERVER_URL=${MULTICA_SERVER_URL}" \
"LOCAL_UPLOAD_BASE_URL=${LOCAL_UPLOAD_BASE_URL}" \
"PLAYWRIGHT_BASE_URL=${PLAYWRIGHT_BASE_URL}"
' _ "$tmp_env"
)"
require_env "$local_env" 'PORT=9100'
require_env "$local_env" 'FRONTEND_PORT=3100'
require_env "$local_env" 'FRONTEND_ORIGIN=http://localhost:3100'
require_env "$local_env" 'MULTICA_APP_URL=http://localhost:3100'
require_env "$local_env" 'GOOGLE_REDIRECT_URI=http://localhost:3100/auth/callback'
require_env "$local_env" 'MULTICA_SERVER_URL=ws://localhost:9100/ws'
require_env "$local_env" 'LOCAL_UPLOAD_BASE_URL=http://localhost:9100'
require_env "$local_env" 'PLAYWRIGHT_BASE_URL=http://localhost:3100'
echo "self-host env derivation ok"