192 lines
9.3 KiB
Bash
Executable File
192 lines
9.3 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# Define color codes
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
CYAN='\033[0;36m'
|
|
YELLOW='\033[0;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Check if .env file exists and delete
|
|
echo "${YELLOW}Deleting old .env file...${NC}"
|
|
rm -f ./.env.test.local
|
|
|
|
# Greet user
|
|
echo "${CYAN}Hello! Let's set up your environment variables.${NC}"
|
|
|
|
# Ask user for variable content
|
|
# Ask user for variable content and validate input
|
|
while true; do
|
|
read -p "What is the HOST? [0.0.0.0] " HOST
|
|
# HOST=${HOST:-0.0.0.0} # set default value for PORT
|
|
if [ -z "$HOST" ]; then
|
|
echo "${RED}HOST cannot be blank. Please enter a value.${NC}"
|
|
else
|
|
break
|
|
fi
|
|
done
|
|
|
|
# Ask user for variable content and validate input
|
|
while true; do
|
|
read -p "What is the port you want to run the server on? [3000] " PORT
|
|
# PORT=${PORT:-3000} # set default value for PORT
|
|
if [ -z "$PORT" ]; then
|
|
echo "${RED}PORT cannot be blank. Please enter a value.${NC}"
|
|
else
|
|
break
|
|
fi
|
|
done
|
|
|
|
while true; do
|
|
read -p "What is the name of the service? " SERVICE_NAME
|
|
if [ -z "$SERVICE_NAME" ]; then
|
|
echo "${RED}SERVICE_NAME cannot be blank. Please enter a value.${NC}"
|
|
else
|
|
break
|
|
fi
|
|
done
|
|
|
|
while true; do
|
|
read -p "What is your JWT_KEY? " JWT_KEY
|
|
if [ -z "$JWT_KEY" ]; then
|
|
echo "${RED}JWT_KEY cannot be blank. Please enter a value.${NC}"
|
|
else
|
|
break
|
|
fi
|
|
done
|
|
|
|
while true; do
|
|
read -p "What is your SECRET? " SECRET
|
|
if [ -z "$SECRET" ]; then
|
|
echo "${RED}SECRET cannot be blank. Please enter a value.${NC}"
|
|
else
|
|
break
|
|
fi
|
|
done
|
|
|
|
HASH=10 # set default value for HASH
|
|
|
|
read -p "What is the path to your Google Application Credentials file? [./src/config/gcloud/google-application-credentials.json] " GOOGLE_APPLICATION_CREDENTIALS
|
|
GOOGLE_APPLICATION_CREDENTIALS=${GOOGLE_APPLICATION_CREDENTIALS:-./src/config/gcloud/google-application-credentials.json} # set default value for GOOGLE_APPLICATION_CREDENTIALS
|
|
|
|
read -p "What is your Google Cloud project ID? " GOOGLE_PROJECT_ID
|
|
read -p "What is your Google Cloud Storage bucket name? " GOOGLE_STORAGE_BUCKET_NAME
|
|
read -p "What is your Google Client ID? " GOOGLE_CLIENT_ID
|
|
read -p "What is your Google Client Secret? " GOOGLE_CLIENT_SECRET
|
|
read -p "What is your Google Maps API key? " GOOGLE_MAPS_API_KEY
|
|
|
|
read -p "What is your CLIENT_URL? [http://localhost:3000] " CLIENT_URL
|
|
CLIENT_URL=${CLIENT_URL:-http://localhost:3000} # set default value for CLIENT_URL
|
|
|
|
read -p "What is your MongoDB URI? [mongodb://localhost:27017/database_name] " MONGO_URI
|
|
MONGO_URI=${MONGO_URI:-mongodb://localhost:27017/database_name} # set default value for MONGO_URI
|
|
|
|
read -p "What is your MongoDB test URI? [mongodb://localhost:27017/test_database_name] " MONGO_URI_TEST
|
|
MONGO_URI_TEST=${MONGO_URI_TEST:-mongodb://localhost:27017/test_database_name} # set default value for MONGO_URI_TEST
|
|
|
|
read -p "What is your MongoDB username? " MONGO_USER
|
|
MONGO_USER=${MONGO_USER:-'your_mongo_user'} # set default value for MONGO_USER and add single quotes around the value
|
|
|
|
read -p "What is your MongoDB password? " MONGO_PASS
|
|
MONGO_PASS=${MONGO_PASS:-'your_mongo_password'} # set default value for MONGO_PASS and add single quotes around the value
|
|
|
|
read -p "What is your MySQL staging host? " MYSQL_HOST_STAGE
|
|
MYSQL_HOST_STAGE=${MYSQL_HOST_STAGE:-'your_myql_host_stage'} # set default value for MYSQL_HOST_STAGE and add single quotes around the value
|
|
|
|
read -p "What is your MySQL staging user? " MYSQL_USER_STAGE
|
|
MYSQL_USER_STAGE=${MYSQL_USER_STAGE:-'your_myql_user'} # set default value for MYSQL_USER_STAGE and add single quotes around the value
|
|
|
|
read -p "What is your MySQL staging password? " MYSQL_PASSWORD_STAGE
|
|
MYSQL_PASSWORD_STAGE=${MYSQL_PASSWORD_STAGE:-'your_myql_pass'} # set default value for MYSQL_PASSWORD_STAGE and add single quotes around the value
|
|
|
|
read -p "What is your MySQL staging database? " MYSQL_DB_STAGE
|
|
MYSQL_DB_STAGE=${MYSQL_DB_STAGE:-'your_myql_db_name'} # set default value for MYSQL_DB_STAGE and add single quotes around the value
|
|
|
|
read -p "What is your MySQL staging socket? " MYSQL_SOCKET_STAGE
|
|
MYSQL_SOCKET_STAGE=${MYSQL_SOCKET_STAGE:-'/your/socket-cloud-sql'} # set default value for MYSQL_SOCKET_STAGE and add single quotes around the value
|
|
|
|
read -p "What is your MySQL production host? " MYSQL_HOST_PROD
|
|
MYSQL_HOST_PROD=${MYSQL_HOST_PROD:-'your_myql_host_stage'} # set default value for MYSQL_HOST_PROD and
|
|
|
|
read -p "What is your MySQL production user? " MYSQL_USER_PROD
|
|
MYSQL_USER_PROD=${MYSQL_USER_PROD:-'your_myql_user'} # set default value for MYSQL_USER_PROD and add single quotes around the value
|
|
|
|
read -p "What is your MySQL production password? " MYSQL_PASSWORD_PROD
|
|
MYSQL_PASSWORD_PROD=${MYSQL_PASSWORD_PROD:-'your_myql_pass'} # set default value for MYSQL_PASSWORD_PROD and add single quotes around the value
|
|
|
|
read -p "What is your MySQL production database? " MYSQL_DB_PROD
|
|
MYSQL_DB_PROD=${MYSQL_DB_PROD:-'your_myql_db_name'} # set default value for MYSQL_DB_PROD and add single quotes around the value
|
|
|
|
read -p "What is your MySQL production socket? " MYSQL_SOCKET_PROD
|
|
MYSQL_SOCKET_PROD=${MYSQL_SOCKET_PROD:-'/your/socket-cloud-sql'} # set default value for MYSQL_SOCKET_PROD and add single quotes around the value
|
|
|
|
read -p "What is your SparkPost API key? " SPARKPOST_API_KEY
|
|
SPARKPOST_API_KEY=${SPARKPOST_API_KEY:-'your_sparkpost_api_key'} # set default value for SPARKPOST_API_KEY and add single quotes around the value
|
|
|
|
read -p "What is your SparkPost sender domain? " SPARKPOST_SENDER_DOMAIN
|
|
SPARKPOST_SENDER_DOMAIN=${SPARKPOST_SENDER_DOMAIN:-'your_sparkpost_sender_domain'} # set default value for SPARKPOST_SENDER_DOMAIN and add single quotes around the value
|
|
|
|
read -p "What is your MessageBird Access Key? " MESSAGEBIRD_ACCESS_KEY
|
|
MESSAGEBIRD_ACCESS_KEY=${MESSAGEBIRD_ACCESS_KEY:-'your_messagbird_access_key'} # set default value for MESSAGEBIRD_ACCESS_KEY and add single quotes around the value
|
|
|
|
read -p "What is your MessageBird WhatsApp Channel ID? " MESSAGEBIRD_WHATSAPP_CHANNEL_ID
|
|
MESSAGEBIRD_WHATSAPP_CHANNEL_ID=${MESSAGEBIRD_WHATSAPP_CHANNEL_ID:-'your_messagebird_whatsapp_channel_id'} # set default value for MESSAGEBIRD_WHATSAPP_CHANNEL_ID and add single quotes around the value
|
|
|
|
read -p "What is your MessageBird Template Namespace ID? " MESSAGEBIRD_TEMPLATE_NAMESPACE_ID
|
|
MESSAGEBIRD_TEMPLATE_NAMESPACE_ID=${MESSAGEBIRD_TEMPLATE_NAMESPACE_ID:-'your_messagebird_template_namespace_id'} # set default value for MESSAGEBIRD_TEMPLATE_NAMESPACE_ID and add single quotes around the value
|
|
|
|
# Write variables to .env file one level up from the script's location
|
|
echo "# SERVER CONFIGURATION" >> ./.env.test.local
|
|
echo "HOST=${HOST}" >> ./.env.test.local
|
|
echo "PORT=${PORT}" >> ./.env.test.local
|
|
echo "SERVICE_NAME='${SERVICE_NAME}'" >> ./.env.test.local
|
|
|
|
echo "# JWT CONFIGURATION" >> ./.env.test.local
|
|
echo "JWT_KEY='${JWT_KEY}'" >> ./.env.test.local
|
|
echo "SECRET='${SECRET}'" >> ./.env.test.local
|
|
echo "HASH=${HASH}" >> ./.env.test.local
|
|
|
|
echo "# MONGO DB CONFIGURATION" >> ./.env.test.local
|
|
echo "MONGO_URI='${MONGO_URI}'" >> ./.env.test.local
|
|
echo "MONGO_URI_TEST='${MONGO_URI_TEST}'" >> ./.env.test.local
|
|
echo "MONGO_USER='${MONGO_USER}'" >> ./.env.test.local
|
|
echo "MONGO_PASS='${MONGO_PASS}'" >> ./.env.test.local
|
|
|
|
echo "# GOOGLE CLOUD CONFIGURATION" >> ./.env.test.local
|
|
echo "GOOGLE_APPLICATION_CREDENTIALS='${GOOGLE_APPLICATION_CREDENTIALS}'" >> ./.env.test.local
|
|
echo "GOOGLE_PROJECT_ID='${GOOGLE_PROJECT_ID}'" >> ./.env.test.local
|
|
echo "GOOGLE_STORAGE_BUCKET_NAME='${GOOGLE_STORAGE_BUCKET_NAME}'" >> ./.env.test.local
|
|
echo "GOOGLE_CLIENT_ID='${GOOGLE_CLIENT_ID}'" >> ./.env.test.local
|
|
echo "GOOGLE_CLIENT_SECRET='${GOOGLE_CLIENT_SECRET}'" >> ./.env.test.local
|
|
echo "GOOGLE_MAPS_API_KEY='${GOOGLE_MAPS_API_KEY}'" >> ./.env.test.local
|
|
|
|
echo "# CLIENT CONFIGURATION" >> ./.env.test.local
|
|
echo "CLIENT_URL='${CLIENT_URL}'" >> ./.env.test.local
|
|
|
|
echo "# MYSQL CONFIGURATION DEVELOPMENT" >> ./.env.test.local
|
|
echo "MYSQL_HOST_STAGE='${MYSQL_HOST_STAGE}'" >> ./.env.test.local
|
|
echo "MYSQL_USER_STAGE='${MYSQL_USER_STAGE}'" >> ./.env.test.local
|
|
echo "MYSQL_PASSWORD_STAGE='${MYSQL_PASSWORD_STAGE}'" >> ./.env.test.local
|
|
echo "MYSQL_DB_STAGE='${MYSQL_DB_STAGE}'" >> ./.env.test.local
|
|
echo "MYSQL_SOCKET_STAGE='${MYSQL_SOCKET_STAGE}'" >> ./.env.test.local
|
|
|
|
echo "# MYSQL CONFIGURATION PRODUCTION" >> ./.env.test.local
|
|
echo "MYSQL_HOST_PROD='${MYSQL_HOST_PROD}'" >> ./.env.test.local
|
|
echo "MYSQL_USER_PROD='${MYSQL_USER_PROD}'" >> ./.env.test.local
|
|
echo "MYSQL_PASSWORD_PROD='${MYSQL_PASSWORD_PROD}'" >> ./.env.test.local
|
|
echo "MYSQL_DB_PROD='${MYSQL_DB_PROD}'" >> ./.env.test.local
|
|
echo "MYSQL_SOCKET_PROD='${MYSQL_SOCKET_PROD}'" >> ./.env.test.local
|
|
|
|
echo "# SPARKPOST CONFIGURATION" >> ./.env.test.local
|
|
echo "SPARKPOST_API_KEY='${SPARKPOST_API_KEY}'" >> ./.env.test.local
|
|
echo "SPARKPOST_SENDER_DOMAIN='${SPARKPOST_SENDER_DOMAIN}'" >> ./.env.test.local
|
|
|
|
echo "# MESSAGEBIRD CONFIGURATION" >> ./.env.test.local
|
|
echo "MESSAGEBIRD_ACCESS_KEY='${MESSAGEBIRD_ACCESS_KEY}'" >> ./.env.test.local
|
|
echo "MESSAGEBIRD_WHATSAPP_CHANNEL_ID='${MESSAGEBIRD_WHATSAPP_CHANNEL_ID}'" >> ./.env.test.local
|
|
echo "MESSAGEBIRD_TEMPLATE_NAMESPACE_ID='${MESSAGEBIRD_TEMPLATE_NAMESPACE_ID}'" >> ./.env.test.local
|
|
|
|
# Success message
|
|
echo "${GREEN}Your environment variables have been written to ./.env.test.local. Thank you for using this script!${NC}"
|
|
echo "${GREEN}Please make sure to copy the .evn.test.local file to .env before going to production.${NC}"
|