fix(makefile): improve generate-env command and script
Some checks failed
continuous-integration/drone/push Build is failing
Some checks failed
continuous-integration/drone/push Build is failing
- Fix bash error in generate_env.sh with proper environment variable handling - Add docker-compose command detection for better compatibility - Add generate-env-prod command with production warnings - Make generate-env non-interactive by default for easier automation - Add generate-env-interactive for when user input is needed - Expand .env.example with more configuration options - Add helpful production deployment warnings Resolves: 'make generate-env generates nonsense' issue
This commit is contained in:
14
.env.example
14
.env.example
@@ -18,3 +18,17 @@ POSTGRES_PASSWORD=links_password
|
||||
|
||||
# Frontend настройки
|
||||
NEXT_PUBLIC_API_URL=http://localhost:8000
|
||||
|
||||
# Опциональные настройки
|
||||
# DJANGO_EMAIL_BACKEND=django.core.mail.backends.console.EmailBackend
|
||||
# DJANGO_EMAIL_HOST=
|
||||
# DJANGO_EMAIL_PORT=587
|
||||
# DJANGO_EMAIL_HOST_USER=
|
||||
# DJANGO_EMAIL_HOST_PASSWORD=
|
||||
# DJANGO_EMAIL_USE_TLS=True
|
||||
|
||||
# Для продакшена
|
||||
# DJANGO_SECURE_SSL_REDIRECT=True
|
||||
# DJANGO_SECURE_HSTS_SECONDS=31536000
|
||||
# DJANGO_SECURE_HSTS_INCLUDE_SUBDOMAINS=True
|
||||
# DJANGO_SECURE_HSTS_PRELOAD=True
|
||||
17
Makefile
17
Makefile
@@ -248,10 +248,23 @@ drone-sign: ## Подпись .drone.yml (требует настройки)
|
||||
@echo "✅ Конфигурация подписана"
|
||||
|
||||
# === Helper scripts and automation ===
|
||||
generate-env: ## Сгенерировать .env (интерактивно)
|
||||
@echo "🧭 Генерация .env файла (использует scripts/generate_env.sh)"
|
||||
generate-env: ## Сгенерировать .env (автоматически из .env.example)
|
||||
@echo "🧭 Генерация .env файла из .env.example"
|
||||
@bash ./scripts/generate_env.sh --yes
|
||||
|
||||
generate-env-interactive: ## Сгенерировать .env (интерактивно)
|
||||
@echo "🧭 Генерация .env файла (интерактивно)"
|
||||
@bash ./scripts/generate_env.sh
|
||||
|
||||
generate-env-prod: ## Сгенерировать .env для продакшена
|
||||
@echo "🚀 Генерация .env для продакшена"
|
||||
@bash ./scripts/generate_env.sh --yes
|
||||
@echo "⚠️ ВНИМАНИЕ: Измените значения в .env для продакшена!"
|
||||
@echo " - DJANGO_SECRET_KEY (сгенерируйте новый)"
|
||||
@echo " - DJANGO_DEBUG=False"
|
||||
@echo " - DATABASE_PASSWORD (установите надежный пароль)"
|
||||
@echo " - DJANGO_ALLOWED_HOSTS (добавьте ваш домен)"
|
||||
|
||||
create-superuser-noninteractive: ## Создать/обновить суперпользователя из .env (неинтерактивно)
|
||||
@echo "👤 Создание/обновление суперпользователя из .env"
|
||||
@bash ./scripts/create_superuser.sh
|
||||
|
||||
@@ -51,14 +51,25 @@ while IFS= read -r line; do
|
||||
|
||||
if [[ "$confirm" = true ]]; then
|
||||
# non-interactive: keep example defaults or environment overrides
|
||||
if [[ -n "${!key-}" ]]; then
|
||||
new_val="${!key}"
|
||||
sed -i "s|^$key=.*|$key=$new_val|" "$TARGET"
|
||||
env_val=""
|
||||
if [[ -n "${!key:-}" ]]; then
|
||||
env_val="${!key}"
|
||||
fi
|
||||
if [[ -n "$env_val" ]]; then
|
||||
sed -i "s|^$key=.*|$key=$env_val|" "$TARGET"
|
||||
fi
|
||||
continue
|
||||
fi
|
||||
|
||||
read -p "$key [$current_val]: " new_val
|
||||
# Interactive mode: prompt user for each variable
|
||||
if read -t 1 -n 0 2>/dev/null; then
|
||||
# stdin is available for reading
|
||||
read -p "$key [$current_val]: " new_val || true
|
||||
else
|
||||
# no stdin available, skip prompting
|
||||
new_val=""
|
||||
fi
|
||||
|
||||
if [[ -n "$new_val" ]]; then
|
||||
sed -i "s|^$key=.*|$key=$new_val|" "$TARGET"
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user