#!/usr/bin/env bash set -euo pipefail STAGING_ENV=${STAGING_ENV:-/var/lib/xiaoxia-saas-staging/.env} PRODUCTION_DIR=${PRODUCTION_DIR:-/var/lib/xiaoxia-saas-production} PRODUCTION_ENV=${PRODUCTION_ENV:-$PRODUCTION_DIR/.env} GENERATED_DIR=${GENERATED_DIR:-$PRODUCTION_DIR/generated} FORCE=${FORCE:-false} if [ -e "$PRODUCTION_ENV" ] && [ "$FORCE" != "true" ]; then echo "ERROR: production env already exists: $PRODUCTION_ENV" >&2 echo "Set FORCE=true only after manually reviewing the existing file." >&2 exit 1 fi mkdir -p "$PRODUCTION_DIR" "$GENERATED_DIR" chmod 700 "$PRODUCTION_DIR" get_staging_value() { key="$1" if [ -f "$STAGING_ENV" ]; then grep -E "^${key}=" "$STAGING_ENV" | tail -1 | cut -d= -f2- || true fi } random_secret() { python3 - <<'PY' import secrets print(secrets.token_urlsafe(48)) PY } OSS_ENDPOINT=${OSS_ENDPOINT:-$(get_staging_value OSS_ENDPOINT)} OSS_BUCKET_NAME=${OSS_BUCKET_NAME:-$(get_staging_value OSS_BUCKET_NAME)} OSS_ACCESS_KEY_ID=${OSS_ACCESS_KEY_ID:-$(get_staging_value OSS_ACCESS_KEY_ID)} OSS_ACCESS_KEY_SECRET=${OSS_ACCESS_KEY_SECRET:-$(get_staging_value OSS_ACCESS_KEY_SECRET)} JWT_SECRET_KEY=${JWT_SECRET_KEY:-$(random_secret)} cat > "$PRODUCTION_ENV" <