Fixes: None; Extra: Improve overall readability and formatting of README;
145 lines
5.6 KiB
Bash
Executable file
145 lines
5.6 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
if [ ! -d "./evibes" ]; then
|
|
printf "\e[31m❌ Please run this script from the project's root (where the 'evibes' directory lives).\e[0m\n"
|
|
exit 1
|
|
fi
|
|
|
|
PURPLE="\e[38;2;121;101;209m"
|
|
RESET="\e[0m"
|
|
GRAY="\e[90m"
|
|
|
|
SOURCE="${BASH_SOURCE[0]:-$0}"
|
|
SCRIPT_DIR="$(cd "$(dirname "$SOURCE")" && pwd)"
|
|
ART_PATH="$SCRIPT_DIR/../ASCII_ART_EVIBES"
|
|
|
|
if [ ! -f "$ART_PATH" ]; then
|
|
printf "\e[31m❌ Could not find ASCII art at %s\e[0m\n" "$ART_PATH"
|
|
exit 1
|
|
fi
|
|
|
|
while IFS= read -r line; do
|
|
printf "%b%s%b\n" "$PURPLE" "$line" "$RESET"
|
|
done < "$ART_PATH"
|
|
|
|
printf "\n%b by WISELESS TEAM%b\n\n" "$GRAY" "$RESET"
|
|
|
|
# prompt for a value with default
|
|
prompt_default() {
|
|
local name="$1" default="$2" result
|
|
read -rp "Enter $name [$default]: " result
|
|
printf '%s\n' "${result:-$default}"
|
|
}
|
|
|
|
# prompt for a value, auto-generate hex if blank
|
|
prompt_autogen() {
|
|
local name="$1" bytes="$2" result
|
|
read -rp "Enter $name (leave blank to auto-generate): " result
|
|
if [ -z "$result" ]; then
|
|
# generate $bytes random bytes as hex
|
|
result="$(head -c "$bytes" /dev/urandom | od -An -tx1 | tr -d ' \n')"
|
|
fi
|
|
printf '%s\n' "$result"
|
|
}
|
|
|
|
if [ -f .env ]; then
|
|
printf "\e[33m.env already exists and will be overwritten.\e[0m\n"
|
|
read -rp "Press Enter to continue or Ctrl+C to abort"
|
|
fi
|
|
|
|
PROJECT_NAME=$(prompt_default 'EVIBES_PROJECT_NAME' 'eVibes')
|
|
FRONTEND_DOMAIN=$(prompt_default 'EVIBES_FRONTEND_DOMAIN' 'evibes.com')
|
|
BASE_DOMAIN=$(prompt_default 'EVIBES_BASE_DOMAIN' 'evibes.com')
|
|
SENTRY_DSN=$(prompt_default 'SENTRY_DSN' '')
|
|
DEBUG=$(prompt_default 'DEBUG' '1')
|
|
|
|
SECRET_KEY=$(prompt_autogen 'SECRET_KEY' 32)
|
|
JWT_SIGNING_KEY=$(prompt_autogen 'JWT_SIGNING_KEY' 64)
|
|
|
|
ALLOWED_HOSTS=$(prompt_default 'ALLOWED_HOSTS' 'evibes.com api.evibes.com b2b.evibes.com')
|
|
CSRF_TRUSTED_ORIGINS=$(prompt_default 'CSRF_TRUSTED_ORIGINS' 'https://evibes.com https://api.evibes.com https://www.evibes.com https://b2b.evibes.com')
|
|
CORS_ALLOWED_ORIGINS="$CSRF_TRUSTED_ORIGINS"
|
|
|
|
POSTGRES_DB=$(prompt_default 'POSTGRES_DB' 'evibes')
|
|
POSTGRES_USER=$(prompt_default 'POSTGRES_USER' 'evibes_user')
|
|
POSTGRES_PASSWORD=$(prompt_autogen 'POSTGRES_PASSWORD' 16)
|
|
|
|
DBBACKUP_SFTP_HOST=$(prompt_default 'DBBACKUP_SFTP_HOST' 'Your SFTP backup host')
|
|
DBBACKUP_SFTP_USER=$(prompt_default 'DBBACKUP_SFTP_USER' 'The username to use to log in to that host')
|
|
DBBACKUP_SFTP_PASS=$(prompt_default 'DBBACKUP_SFTP_PASS' 'The password to use to log in to that host')
|
|
|
|
ELASTIC_PASSWORD=$(prompt_autogen 'ELASTIC_PASSWORD' 16)
|
|
REDIS_PASSWORD=$(prompt_autogen 'REDIS_PASSWORD' 16)
|
|
|
|
PROMETHEUS_USER=$(prompt_default 'PROMETHEUS_USER' 'evibes')
|
|
PROMETHEUS_PASSWORD=$(prompt_autogen 'PROMETHEUS_PASSWORD' 16)
|
|
|
|
EMAIL_BACKEND=$(prompt_default 'EMAIL_BACKEND' 'django.core.mail.backends.smtp.EmailBackend')
|
|
EMAIL_HOST=$(prompt_default 'EMAIL_HOST' 'smtp.whatever.evibes.com')
|
|
EMAIL_PORT=$(prompt_default 'EMAIL_PORT' '465')
|
|
EMAIL_USE_TLS=$(prompt_default 'EMAIL_USE_TLS' '0')
|
|
EMAIL_USE_SSL=$(prompt_default 'EMAIL_USE_SSL' '1')
|
|
EMAIL_HOST_USER=$(prompt_default 'EMAIL_HOST_USER' 'your-email-user@whatever.evibes.com')
|
|
EMAIL_FROM="$EMAIL_HOST_USER"
|
|
EMAIL_HOST_PASSWORD=$(prompt_default 'EMAIL_HOST_PASSWORD' 'SUPERSECRETEMAILHOSTPASSWORD')
|
|
|
|
COMPANY_NAME=$(prompt_default 'COMPANY_NAME' 'eVibes, Inc.')
|
|
COMPANY_PHONE_NUMBER=$(prompt_default 'COMPANY_PHONE_NUMBER' '+888888888888')
|
|
COMPANY_ADDRESS=$(prompt_default 'COMPANY_ADDRESS' 'The place that does not exist')
|
|
|
|
OPENAI_API_KEY=$(prompt_default 'OPENAI_API_KEY' 'Haha, really?')
|
|
ABSTRACT_API_KEY=$(prompt_default 'ABSTRACT_API_KEY' 'Haha, really? x2')
|
|
DEEPL_AUTH_KEY=$(prompt_default 'DEEPL_AUTH_KEY' 'Haha, really? x3')
|
|
|
|
# Write to .env
|
|
{
|
|
printf 'EVIBES_PROJECT_NAME="%s"\n' "$PROJECT_NAME"
|
|
printf 'EVIBES_FRONTEND_DOMAIN="%s"\n' "$FRONTEND_DOMAIN"
|
|
printf 'EVIBES_BASE_DOMAIN="%s"\n' "$BASE_DOMAIN"
|
|
printf 'SENTRY_DSN="%s"\n' "$SENTRY_DSN"
|
|
printf 'DEBUG=%s\n\n' "$DEBUG"
|
|
|
|
printf 'SECRET_KEY="%s"\n' "$SECRET_KEY"
|
|
printf 'JWT_SIGNING_KEY="%s"\n\n' "$JWT_SIGNING_KEY"
|
|
|
|
printf 'ALLOWED_HOSTS="%s"\n' "$ALLOWED_HOSTS"
|
|
printf 'CSRF_TRUSTED_ORIGINS="%s"\n' "$CSRF_TRUSTED_ORIGINS"
|
|
printf 'CORS_ALLOWED_ORIGINS="%s"\n\n' "$CORS_ALLOWED_ORIGINS"
|
|
|
|
printf 'POSTGRES_DB="%s"\n' "$POSTGRES_DB"
|
|
printf 'POSTGRES_USER="%s"\n' "$POSTGRES_USER"
|
|
printf 'POSTGRES_PASSWORD="%s"\n\n' "$POSTGRES_PASSWORD"
|
|
|
|
printf 'DBBACKUP_SFTP_HOST="%s"\n' "$DBBACKUP_SFTP_HOST"
|
|
printf 'DBBACKUP_SFTP_USER="%s"\n' "$DBBACKUP_SFTP_USER"
|
|
printf 'DBBACKUP_SFTP_PASS="%s"\n\n' "$DBBACKUP_SFTP_PASS"
|
|
|
|
printf 'ELASTIC_PASSWORD="%s"\n\n' "$ELASTIC_PASSWORD"
|
|
|
|
printf 'REDIS_PASSWORD="%s"\n' "$REDIS_PASSWORD"
|
|
printf 'CELERY_BROKER_URL="redis://:%s@redis:6379/0"\n' "$REDIS_PASSWORD"
|
|
printf 'CELERY_RESULT_BACKEND="redis://:%s@redis:6379/0"\n\n' "$REDIS_PASSWORD"
|
|
|
|
printf 'PROMETHEUS_USER="%s"\n' "$PROMETHEUS_USER"
|
|
printf 'PROMETHEUS_PASSWORD="%s"\n\n' "$PROMETHEUS_PASSWORD"
|
|
|
|
printf 'EMAIL_BACKEND="%s"\n' "$EMAIL_BACKEND"
|
|
printf 'EMAIL_HOST="%s"\n' "$EMAIL_HOST"
|
|
printf 'EMAIL_PORT="%s"\n' "$EMAIL_PORT"
|
|
printf 'EMAIL_USE_TLS=%s\n' "$EMAIL_USE_TLS"
|
|
printf 'EMAIL_USE_SSL=%s\n' "$EMAIL_USE_SSL"
|
|
printf 'EMAIL_HOST_USER="%s"\n' "$EMAIL_HOST_USER"
|
|
printf 'EMAIL_HOST_PASSWORD="%s"\n' "$EMAIL_HOST_PASSWORD"
|
|
printf 'EMAIL_FROM="%s"\n\n' "$EMAIL_FROM"
|
|
|
|
printf 'COMPANY_NAME="%s"\n' "$COMPANY_NAME"
|
|
printf 'COMPANY_PHONE_NUMBER="%s"\n' "$COMPANY_PHONE_NUMBER"
|
|
printf 'COMPANY_ADDRESS="%s"\n\n' "$COMPANY_ADDRESS"
|
|
|
|
printf 'OPENAI_API_KEY="%s"\n\n' "$OPENAI_API_KEY"
|
|
printf 'ABSTRACT_API_KEY="%s"\n\n' "$ABSTRACT_API_KEY"
|
|
printf 'DEEPL_AUTH_KEY="%s"\n' "$DEEPL_AUTH_KEY"
|
|
} > .env
|
|
|
|
printf "\e[32m.env file generated with fresh values.\e[0m\n"
|