59 lines
1.4 KiB
Bash
Executable File
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"
|