sintonia/tools/populate-laravel-env-file.sh

59 lines
1.9 KiB
Bash
Raw Normal View History

#!/bin/sh
# Check if yq is installed
if ! command -v yq >/dev/null 2>&1; then
echo "yq is not installed. Install it first (e.g., sudo apt-get install yq)."
exit 1
fi
# Input YAML file
YAML_FILE="$1"
# Output .env file
ENV_FILE="$2"
# Extract values from YAML using yq
DB_HOST=$(yq '.database.host // "postgres"' "$YAML_FILE")
DB_PORT=$(yq '.database.port // "5432"' "$YAML_FILE")
DB_USER=$(yq '.database.user // "libretime"' "$YAML_FILE")
DB_PASSWORD=$(yq '.database.password // "libretime"' "$YAML_FILE")
DB_DATABASE=$(yq '.database.database // "libretime"' "$YAML_FILE")
MAIL_HOST=$(yq '.email.host // "localhost"' "$YAML_FILE")
MAIL_PORT=$(yq '.email.port // "25"' "$YAML_FILE")
MAIL_USERNAME=$(yq '.email.user // ""' "$YAML_FILE")
MAIL_PASSWORD=$(yq '.email.password // ""' "$YAML_FILE")
MAIL_ENCRYPTION=$(yq '.email.encryption // ""' "$YAML_FILE")
# Function to update or add a variable in the .env file
update_env_var() {
local key="$1"
local value="$2"
if grep -q "^$key=" "$ENV_FILE"; then
# Update existing variable
sed -i.bak "s|^$key=.*|$key=$value|" "$ENV_FILE"
else
# Add new variable
echo "$key=$value" >> "$ENV_FILE"
fi
}
# Create or update the .env file with extracted values
update_env_var "DB_CONNECTION" "postgres"
update_env_var "DB_HOST" "$DB_HOST"
update_env_var "DB_PORT" "$DB_PORT"
update_env_var "DB_DATABASE" "$DB_DATABASE"
update_env_var "DB_USERNAME" "$DB_USER"
update_env_var "DB_PASSWORD" "$DB_PASSWORD"
update_env_var "MAIL_MAILER" "smtp"
update_env_var "MAIL_HOST" "$MAIL_HOST"
update_env_var "MAIL_PORT" "$MAIL_PORT"
update_env_var "MAIL_USERNAME" "$MAIL_USERNAME"
update_env_var "MAIL_PASSWORD" "$MAIL_PASSWORD"
update_env_var "MAIL_ENCRYPTION" "$MAIL_ENCRYPTION"
update_env_var "MAIL_FROM_ADDRESS" "\"hello@example.com\""
update_env_var "MAIL_FROM_NAME" "${APP_NAME}"
echo ".env file has been created/updated successfully."