|
|
#!/bin/bash |
|
|
|
|
|
|
|
|
|
|
|
RED='\033[0;31m' |
|
|
GREEN='\033[0;32m' |
|
|
YELLOW='\033[1;33m' |
|
|
BLUE='\033[0;34m' |
|
|
NC='\033[0m' |
|
|
|
|
|
|
|
|
print_status() { |
|
|
echo -e "${BLUE}[*]${NC} $1" |
|
|
} |
|
|
|
|
|
print_success() { |
|
|
echo -e "${GREEN}[+]${NC} $1" |
|
|
} |
|
|
|
|
|
print_warning() { |
|
|
echo -e "${YELLOW}[!]${NC} $1" |
|
|
} |
|
|
|
|
|
print_error() { |
|
|
echo -e "${RED}[-]${NC} $1" |
|
|
} |
|
|
|
|
|
|
|
|
check_conda() { |
|
|
if command -v conda &> /dev/null; then |
|
|
return 0 |
|
|
else |
|
|
return 1 |
|
|
fi |
|
|
} |
|
|
|
|
|
|
|
|
conda_env_exists() { |
|
|
local env_name=$1 |
|
|
conda info --envs | grep -q "^$env_name " |
|
|
} |
|
|
|
|
|
|
|
|
validate_env() { |
|
|
local missing_vars=() |
|
|
|
|
|
|
|
|
[[ -z "$GEMINI_API_KEY" ]] && missing_vars+=("GEMINI_API_KEY") |
|
|
[[ -z "$SILICONFLOW_API_KEY" ]] && missing_vars+=("SILICONFLOW_API_KEY") |
|
|
[[ -z "$SILICONFLOW_CHAT_URL" ]] && missing_vars+=("SILICONFLOW_CHAT_URL") |
|
|
|
|
|
if [ ${#missing_vars[@]} -ne 0 ]; then |
|
|
print_error "Missing required environment variables:" |
|
|
for var in "${missing_vars[@]}"; do |
|
|
echo " - $var" |
|
|
done |
|
|
echo "" |
|
|
echo "Please ensure these variables are set in your .env file." |
|
|
return 1 |
|
|
fi |
|
|
|
|
|
print_success "All required environment variables are present." |
|
|
return 0 |
|
|
} |
|
|
|
|
|
|
|
|
check_env_file() { |
|
|
if [ -f ".env" ]; then |
|
|
print_status "Loading environment variables from .env file..." |
|
|
export $(grep -v '^#' .env | xargs) |
|
|
return 0 |
|
|
else |
|
|
print_warning ".env file not found in current directory." |
|
|
echo "Please create a .env file with your API keys." |
|
|
echo "See .env.example for reference." |
|
|
return 1 |
|
|
fi |
|
|
} |
|
|
|
|
|
|
|
|
install_requirements() { |
|
|
print_status "Installing Python requirements..." |
|
|
if pip install -r requirements.txt; then |
|
|
print_success "Requirements installed successfully." |
|
|
return 0 |
|
|
else |
|
|
print_error "Failed to install requirements." |
|
|
return 1 |
|
|
fi |
|
|
} |
|
|
|
|
|
|
|
|
create_conda_env() { |
|
|
local env_name="wisal-env" |
|
|
local python_version="3.10" |
|
|
|
|
|
print_status "Creating new conda environment: $env_name with Python $python_version..." |
|
|
|
|
|
if conda create -n "$env_name" python=$python_version -y; then |
|
|
print_success "Conda environment '$env_name' created successfully." |
|
|
|
|
|
|
|
|
eval "$(conda shell.bash hook)" |
|
|
conda activate "$env_name" |
|
|
|
|
|
|
|
|
if install_requirements; then |
|
|
return 0 |
|
|
else |
|
|
print_error "Failed to install requirements in conda environment." |
|
|
return 1 |
|
|
fi |
|
|
else |
|
|
print_error "Failed to create conda environment." |
|
|
return 1 |
|
|
fi |
|
|
} |
|
|
|
|
|
|
|
|
use_existing_conda_env() { |
|
|
local env_name=$1 |
|
|
|
|
|
print_status "Activating existing conda environment: $env_name..." |
|
|
|
|
|
|
|
|
eval "$(conda shell.bash hook)" |
|
|
|
|
|
if conda activate "$env_name"; then |
|
|
print_success "Conda environment '$env_name' activated." |
|
|
|
|
|
|
|
|
print_status "Installing/updating Python requirements..." |
|
|
if install_requirements; then |
|
|
return 0 |
|
|
else |
|
|
print_error "Failed to install requirements." |
|
|
return 1 |
|
|
fi |
|
|
else |
|
|
print_error "Failed to activate conda environment '$env_name'." |
|
|
return 1 |
|
|
fi |
|
|
} |
|
|
|
|
|
|
|
|
run_application() { |
|
|
print_status "Starting Wisal Autism AI Assistant..." |
|
|
|
|
|
|
|
|
if ! validate_env; then |
|
|
print_error "Environment validation failed. Cannot start application." |
|
|
exit 1 |
|
|
fi |
|
|
|
|
|
|
|
|
print_success "Launching Wisal application..." |
|
|
echo "" |
|
|
python main.py |
|
|
} |
|
|
|
|
|
|
|
|
main() { |
|
|
echo "===============================================" |
|
|
echo " 🚀 Wisal Autism AI Assistant - Launcher" |
|
|
echo "===============================================" |
|
|
echo "" |
|
|
|
|
|
|
|
|
if ! check_env_file; then |
|
|
read -p "Do you want to continue without .env file? (y/N): " -n 1 -r |
|
|
echo |
|
|
if [[ ! $REPLY =~ ^[Yy]$ ]]; then |
|
|
print_error "Exiting. Please create a .env file with your API keys." |
|
|
exit 1 |
|
|
fi |
|
|
fi |
|
|
|
|
|
echo "" |
|
|
echo "Please select an option to run Wisal:" |
|
|
echo " 1) Use existing conda environment" |
|
|
echo " 2) Create new conda environment" |
|
|
echo " 3) Install requirements with current Python environment" |
|
|
echo "" |
|
|
|
|
|
read -p "Enter your choice (1-3): " choice |
|
|
|
|
|
case $choice in |
|
|
1) |
|
|
if ! check_conda; then |
|
|
print_error "Conda is not installed or not in PATH." |
|
|
exit 1 |
|
|
fi |
|
|
|
|
|
echo "" |
|
|
echo "Available conda environments:" |
|
|
conda info --envs | grep -v "#" |
|
|
echo "" |
|
|
|
|
|
read -p "Enter the name of the conda environment to use: " env_name |
|
|
|
|
|
if [ -z "$env_name" ]; then |
|
|
print_error "Environment name cannot be empty." |
|
|
exit 1 |
|
|
fi |
|
|
|
|
|
if ! conda_env_exists "$env_name"; then |
|
|
print_error "Conda environment '$env_name' does not exist." |
|
|
exit 1 |
|
|
fi |
|
|
|
|
|
if use_existing_conda_env "$env_name"; then |
|
|
run_application |
|
|
else |
|
|
print_error "Failed to set up conda environment." |
|
|
exit 1 |
|
|
fi |
|
|
;; |
|
|
2) |
|
|
if ! check_conda; then |
|
|
print_error "Conda is not installed or not in PATH." |
|
|
exit 1 |
|
|
fi |
|
|
|
|
|
if create_conda_env; then |
|
|
run_application |
|
|
else |
|
|
print_error "Failed to create conda environment." |
|
|
exit 1 |
|
|
fi |
|
|
;; |
|
|
3) |
|
|
if install_requirements; then |
|
|
run_application |
|
|
else |
|
|
print_error "Failed to install requirements." |
|
|
exit 1 |
|
|
fi |
|
|
;; |
|
|
*) |
|
|
print_error "Invalid choice. Please select 1, 2, or 3." |
|
|
exit 1 |
|
|
;; |
|
|
esac |
|
|
} |
|
|
|
|
|
|
|
|
main "$@" |