42 lines
1.0 KiB
Bash
42 lines
1.0 KiB
Bash
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
ENV_FILE="/opt/flight-manager/development/.env"
|
|
TEMPLATE="/opt/flight-manager/development/config.template.json"
|
|
OUTPUT="/opt/flight-manager/development/config.generated.json"
|
|
DOCKER_COMPOSE_PATH="/opt/stacks/..."
|
|
|
|
echo "[deploy] Secrets changed, reloading..."
|
|
|
|
# Load new secrets
|
|
set -a; source "$ENV_FILE"; set +a
|
|
|
|
# Validate all required vars are present
|
|
REQUIRED_VARS=$(grep -o '\${[A-Z0-9_]\+}' "$TEMPLATE" | tr -d '${}' | sort -u)
|
|
MISSING=()
|
|
for var in $REQUIRED_VARS; do
|
|
[ -z "${!var+set}" ] && MISSING+=("$var")
|
|
done
|
|
if [ ${#MISSING[@]} -gt 0 ]; then
|
|
echo "[deploy] ERROR: Missing variables: ${MISSING[*]}"
|
|
exit 1
|
|
fi
|
|
|
|
# Render config.generated.json
|
|
VARS=$(printf '${%s} ' $REQUIRED_VARS)
|
|
envsubst "$VARS" < "$TEMPLATE" > "$OUTPUT"
|
|
|
|
# Validate JSON
|
|
if ! jq empty "$OUTPUT" 2>/dev/null; then
|
|
echo "[deploy] ERROR: Generated config is not valid JSON"
|
|
rm -f "$OUTPUT"
|
|
exit 1
|
|
fi
|
|
|
|
echo "[deploy] Config generated at $OUTPUT"
|
|
|
|
# Restart docker compose
|
|
docker compose -f "$DOCKER_COMPOSE_PATH" restart
|
|
|
|
echo "[deploy] Done."
|