chore: add create-env.sh script for dev/prod env generation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
ae9a7cff11
commit
d14d7a2cb3
1 changed files with 83 additions and 0 deletions
83
scripts/create-env.sh
Executable file
83
scripts/create-env.sh
Executable file
|
|
@ -0,0 +1,83 @@
|
|||
#!/usr/bin/env bash
|
||||
# Usage:
|
||||
# ./scripts/create-env.sh → creates .env (dev)
|
||||
# ./scripts/create-env.sh prod → creates .env.production
|
||||
set -euo pipefail
|
||||
|
||||
TARGET="${1:-dev}"
|
||||
if [[ "$TARGET" == "prod" ]]; then
|
||||
FILE=".env.production"
|
||||
NODE_ENV="production"
|
||||
DB_HOST="postgres"
|
||||
SITE_URL="https://shumiland.com.ua"
|
||||
else
|
||||
FILE=".env"
|
||||
NODE_ENV="development"
|
||||
DB_HOST="localhost"
|
||||
SITE_URL="http://localhost:3000"
|
||||
fi
|
||||
|
||||
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
OUT="$ROOT/$FILE"
|
||||
|
||||
if [[ -f "$OUT" ]]; then
|
||||
echo "⚠️ $FILE already exists. Overwrite? [y/N]"
|
||||
read -r CONFIRM
|
||||
[[ "$CONFIRM" =~ ^[Yy]$ ]] || { echo "Aborted."; exit 0; }
|
||||
fi
|
||||
|
||||
gen() { openssl rand -base64 32 | tr -d '=+/' | head -c 48; }
|
||||
|
||||
POSTGRES_PASSWORD="$(gen)"
|
||||
PAYLOAD_SECRET="$(gen)"
|
||||
REVALIDATE_SECRET="$(gen)"
|
||||
SYNC_SECRET="$(gen)"
|
||||
CRON_SECRET="$(gen)"
|
||||
|
||||
cat > "$OUT" << EOF
|
||||
# ─── Database ────────────────────────────────────────────────────────────────
|
||||
DATABASE_URL=postgresql://shumiland:${POSTGRES_PASSWORD}@${DB_HOST}:5432/shumiland
|
||||
POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
|
||||
|
||||
# ─── Payload CMS ─────────────────────────────────────────────────────────────
|
||||
PAYLOAD_SECRET=${PAYLOAD_SECRET}
|
||||
|
||||
# ─── Next.js ─────────────────────────────────────────────────────────────────
|
||||
NEXT_PUBLIC_SITE_URL=${SITE_URL}
|
||||
|
||||
# ─── Node ────────────────────────────────────────────────────────────────────
|
||||
NODE_ENV=${NODE_ENV}
|
||||
|
||||
# ─── ezy.com.ua ──────────────────────────────────────────────────────────────
|
||||
EZY_PARTNER_KEY=DBBzR-vLcXd-PsQ8wf1oXkti8x0yTKCCUi2J69f8DClbXT
|
||||
EZY_ACTIVITY=fda5a0acfe1dad42867ea88dbe13008a10c391f2
|
||||
|
||||
# ─── Telegram ────────────────────────────────────────────────────────────────
|
||||
TELEGRAM_BOT_TOKEN=8707306864:AAG1UpYFb39m7FVFh5Hkg6TBj-G8O9OSSQ4
|
||||
TELEGRAM_CHAT_ID=5464970026
|
||||
|
||||
# ─── Resend ──────────────────────────────────────────────────────────────────
|
||||
RESEND_API_KEY=re_Y51MgfQN_NNj7jn9z1acWmPDtMSDjzzGr
|
||||
MANAGER_EMAILS=admin@ai-impress.com
|
||||
|
||||
# ─── Binotel ─────────────────────────────────────────────────────────────────
|
||||
BINOTEL_HMAC_SECRET=
|
||||
|
||||
# ─── Revalidation / Sync / Cron ──────────────────────────────────────────────
|
||||
REVALIDATE_SECRET=${REVALIDATE_SECRET}
|
||||
SYNC_SECRET=${SYNC_SECRET}
|
||||
CRON_SECRET=${CRON_SECRET}
|
||||
|
||||
# ─── Certbot (prod only) ─────────────────────────────────────────────────────
|
||||
CERTBOT_DOMAIN=shumiland.com.ua
|
||||
CERTBOT_EMAIL=admin@ai-impress.com
|
||||
EOF
|
||||
|
||||
echo "✅ Created $FILE"
|
||||
echo " POSTGRES_PASSWORD : ${POSTGRES_PASSWORD}"
|
||||
echo " PAYLOAD_SECRET : ${PAYLOAD_SECRET}"
|
||||
echo " REVALIDATE_SECRET : ${REVALIDATE_SECRET}"
|
||||
echo " SYNC_SECRET : ${SYNC_SECRET}"
|
||||
echo " CRON_SECRET : ${CRON_SECRET}"
|
||||
echo ""
|
||||
echo "⚠️ Fill in BINOTEL_HMAC_SECRET manually when available."
|
||||
Loading…
Add table
Reference in a new issue