docs: Update environment configuration and README with comprehensive setup guide
- Enhance `.env.example` with more detailed and organized configuration options - Refactor README to provide clearer setup instructions and system architecture overview - Add new `scripts/setup-env.sh` for flexible environment configuration management - Update `docs/configuration.md` with detailed environment loading strategy and best practices - Improve documentation for speech features, client integration, and development workflows
This commit is contained in:
97
scripts/setup-env.sh
Executable file
97
scripts/setup-env.sh
Executable file
@@ -0,0 +1,97 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Colors for output
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Function to print colored messages
|
||||
print_message() {
|
||||
local color=$1
|
||||
local message=$2
|
||||
echo -e "${color}${message}${NC}"
|
||||
}
|
||||
|
||||
# Function to check if a file exists
|
||||
check_file() {
|
||||
if [ -f "$1" ]; then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to copy environment file
|
||||
copy_env_file() {
|
||||
local source=$1
|
||||
local target=$2
|
||||
if [ -f "$target" ]; then
|
||||
print_message "$YELLOW" "Warning: $target already exists. Skipping..."
|
||||
else
|
||||
cp "$source" "$target"
|
||||
if [ $? -eq 0 ]; then
|
||||
print_message "$GREEN" "Created $target successfully"
|
||||
else
|
||||
print_message "$RED" "Error: Failed to create $target"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Main script
|
||||
print_message "$GREEN" "Setting up environment files..."
|
||||
|
||||
# Check if .env.example exists
|
||||
if ! check_file ".env.example"; then
|
||||
print_message "$RED" "Error: .env.example not found!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Setup base environment file
|
||||
if [ "$1" = "--force" ]; then
|
||||
cp .env.example .env
|
||||
print_message "$GREEN" "Forced creation of .env file"
|
||||
else
|
||||
copy_env_file ".env.example" ".env"
|
||||
fi
|
||||
|
||||
# Determine environment
|
||||
ENV=${NODE_ENV:-development}
|
||||
case "$ENV" in
|
||||
"development"|"dev")
|
||||
ENV_FILE=".env.dev"
|
||||
;;
|
||||
"production"|"prod")
|
||||
ENV_FILE=".env.prod"
|
||||
;;
|
||||
"test")
|
||||
ENV_FILE=".env.test"
|
||||
;;
|
||||
*)
|
||||
print_message "$RED" "Error: Invalid environment: $ENV"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# Copy environment-specific file
|
||||
if [ -f "$ENV_FILE" ]; then
|
||||
if [ "$1" = "--force" ]; then
|
||||
cp "$ENV_FILE" .env
|
||||
print_message "$GREEN" "Forced override of .env with $ENV_FILE"
|
||||
else
|
||||
print_message "$YELLOW" "Do you want to override .env with $ENV_FILE? [y/N] "
|
||||
read -r response
|
||||
if [[ "$response" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
|
||||
cp "$ENV_FILE" .env
|
||||
print_message "$GREEN" "Copied $ENV_FILE to .env"
|
||||
else
|
||||
print_message "$YELLOW" "Keeping existing .env file"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
print_message "$YELLOW" "Warning: $ENV_FILE not found. Using default .env"
|
||||
fi
|
||||
|
||||
print_message "$GREEN" "Environment setup complete!"
|
||||
print_message "$YELLOW" "Remember to set your HASS_TOKEN in .env"
|
||||
Reference in New Issue
Block a user