who_need_help/scripts/init-edge-env.sh
SimpleTest 87e6667e6a
Some checks are pending
Quality / full-local-gates (push) Waiting to run
Add isolated Caddy edge for production and staging
2026-07-21 03:34:37 +03:00

59 lines
1.4 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
umask 077
ROOT=$(CDPATH='' cd -- "$(dirname -- "$0")/.." && pwd)
primary_domain=${1:-}
staging_domain=${2:-}
target=${3:-"$ROOT/.env.edge"}
if [[ -z "$primary_domain" || -z "$staging_domain" ]]; then
echo "Usage: $0 PRIMARY_DOMAIN STAGING_DOMAIN [OUTPUT_FILE]" >&2
exit 1
fi
if [[ "$target" != /* ]]; then
target="$ROOT/$target"
fi
if [[ -e "$target" ]]; then
echo "Refusing to overwrite existing edge environment: $target" >&2
exit 1
fi
target_dir=$(dirname -- "$target")
if [[ ! -d "$target_dir" ]]; then
echo "Output directory does not exist: $target_dir" >&2
exit 1
fi
tmp=$(mktemp "$target_dir/.edge-env.XXXXXX")
trap 'rm -f "$tmp"' EXIT HUP INT TERM
chmod 600 "$tmp"
PRIMARY_DOMAIN_VALUE=$primary_domain \
STAGING_DOMAIN_VALUE=$staging_domain \
awk '
BEGIN {
replacement["PRIMARY_DOMAIN"] = ENVIRON["PRIMARY_DOMAIN_VALUE"]
replacement["STAGING_DOMAIN"] = ENVIRON["STAGING_DOMAIN_VALUE"]
}
{
separator = index($0, "=")
key = separator > 1 ? substr($0, 1, separator - 1) : ""
if (key in replacement) {
print key "=" replacement[key]
} else {
print
}
}
' "$ROOT/.env.edge.example" >"$tmp"
mv "$tmp" "$target"
chmod 600 "$target"
trap - EXIT HUP INT TERM
"$ROOT/scripts/validate-edge-env.sh" "$target"
echo "Created mode-0600 edge environment: $target"