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 настройки
|
# Frontend настройки
|
||||||
NEXT_PUBLIC_API_URL=http://localhost:8000
|
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 "✅ Конфигурация подписана"
|
@echo "✅ Конфигурация подписана"
|
||||||
|
|
||||||
# === Helper scripts and automation ===
|
# === Helper scripts and automation ===
|
||||||
generate-env: ## Сгенерировать .env (интерактивно)
|
generate-env: ## Сгенерировать .env (автоматически из .env.example)
|
||||||
@echo "🧭 Генерация .env файла (использует scripts/generate_env.sh)"
|
@echo "🧭 Генерация .env файла из .env.example"
|
||||||
|
@bash ./scripts/generate_env.sh --yes
|
||||||
|
|
||||||
|
generate-env-interactive: ## Сгенерировать .env (интерактивно)
|
||||||
|
@echo "🧭 Генерация .env файла (интерактивно)"
|
||||||
@bash ./scripts/generate_env.sh
|
@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 (неинтерактивно)
|
create-superuser-noninteractive: ## Создать/обновить суперпользователя из .env (неинтерактивно)
|
||||||
@echo "👤 Создание/обновление суперпользователя из .env"
|
@echo "👤 Создание/обновление суперпользователя из .env"
|
||||||
@bash ./scripts/create_superuser.sh
|
@bash ./scripts/create_superuser.sh
|
||||||
|
|||||||
@@ -51,14 +51,25 @@ while IFS= read -r line; do
|
|||||||
|
|
||||||
if [[ "$confirm" = true ]]; then
|
if [[ "$confirm" = true ]]; then
|
||||||
# non-interactive: keep example defaults or environment overrides
|
# non-interactive: keep example defaults or environment overrides
|
||||||
if [[ -n "${!key-}" ]]; then
|
env_val=""
|
||||||
new_val="${!key}"
|
if [[ -n "${!key:-}" ]]; then
|
||||||
sed -i "s|^$key=.*|$key=$new_val|" "$TARGET"
|
env_val="${!key}"
|
||||||
|
fi
|
||||||
|
if [[ -n "$env_val" ]]; then
|
||||||
|
sed -i "s|^$key=.*|$key=$env_val|" "$TARGET"
|
||||||
fi
|
fi
|
||||||
continue
|
continue
|
||||||
fi
|
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
|
if [[ -n "$new_val" ]]; then
|
||||||
sed -i "s|^$key=.*|$key=$new_val|" "$TARGET"
|
sed -i "s|^$key=.*|$key=$new_val|" "$TARGET"
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user