File size: 4,801 Bytes
8cc0fda | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 | #!/bin/bash
# Gemini Business2API Setup Script
# Handles both installation and updates automatically
# Uses uv for Python environment management
# Usage: ./setup.sh
set -e # Exit on error
echo "=========================================="
echo "Gemini Business2API Setup Script"
echo "=========================================="
echo ""
# Color codes for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Function to print colored messages
print_success() {
echo -e "${GREEN}✓ $1${NC}"
}
print_error() {
echo -e "${RED}✗ $1${NC}"
}
print_info() {
echo -e "${YELLOW}→ $1${NC}"
}
print_step() {
echo -e "${BLUE}[STEP] $1${NC}"
}
# Check if git is installed
if ! command -v git &> /dev/null; then
print_error "Git is not installed. Please install git first."
exit 1
fi
# Step 1: Install or update uv
print_step "Step 1: Installing/Updating uv..."
if ! command -v uv &> /dev/null; then
print_info "uv not found, installing..."
# Install uv using pipx or pip
if command -v pipx &> /dev/null; then
pipx install uv
elif command -v pip &> /dev/null; then
pip install --user uv
else
# Fallback: download and install uv binary
curl -LsSf https://astral.sh/uv/install.sh | sh
export PATH="$HOME/.local/bin:$PATH"
fi
print_success "uv installed successfully"
else
print_info "Updating uv to latest version..."
uv pip install --upgrade uv
print_success "uv updated"
fi
echo ""
# Step 2: Ensure Python 3.11 is available
print_step "Step 2: Ensuring Python 3.11 is available..."
if ! uv python list | grep -q "3.11"; then
print_info "Python 3.11 not found, installing..."
uv python install 3.11
print_success "Python 3.11 installed"
else
print_success "Python 3.11 is already available"
fi
echo ""
# Step 3: Pull latest code from git
print_step "Step 3: Syncing code from repository..."
print_info "Fetching latest changes..."
git fetch origin
print_info "Pulling latest code..."
if git pull origin main 2>/dev/null || git pull origin master 2>/dev/null; then
print_success "Code synchronized successfully"
else
print_info "No remote changes to pull"
fi
echo ""
# Step 4: Setup .env file if it doesn't exist
print_step "Step 4: Checking configuration..."
if [ -f ".env" ]; then
print_info ".env file exists"
else
if [ -f ".env.example" ]; then
cp .env.example .env
print_success ".env file created from .env.example"
print_info "Please edit .env and configure your ADMIN_KEY"
else
print_error ".env.example not found"
exit 1
fi
fi
echo ""
# Step 5: Setup Python virtual environment
print_step "Step 5: Setting up Python environment..."
if [ -d ".venv" ]; then
print_info "Virtual environment already exists"
else
print_info "Creating virtual environment with Python 3.11..."
uv venv --python 3.11 .venv
print_success "Virtual environment created"
fi
echo ""
# Step 6: Install/Update Python dependencies
print_step "Step 6: Installing Python dependencies..."
print_info "Using uv to install dependencies (this may take a moment)..."
uv pip install --python .venv/bin/python -r requirements.txt --system
print_success "Python dependencies installed"
echo ""
# Step 7: Setup frontend
print_step "Step 7: Setting up frontend..."
if [ -d "frontend" ]; then
cd frontend
# Check if npm is installed
if command -v npm &> /dev/null; then
print_info "Installing dependencies..."
npm install
print_info "Building frontend..."
npm run build
print_success "Frontend built successfully"
else
print_error "npm is not installed. Please install Node.js and npm first."
cd ..
exit 1
fi
cd ..
else
print_error "Frontend directory not found. Are you in the project root?"
exit 1
fi
echo ""
# Step 8: Show completion message
echo "=========================================="
print_success "Setup completed successfully!"
echo "=========================================="
echo ""
if [ -f ".env" ]; then
print_info "Next steps:"
echo ""
echo " 1. Edit .env file if needed:"
echo " ${BLUE}nano .env${NC} or ${BLUE}vim .env${NC}"
echo ""
echo " 2. Start the service:"
echo " ${BLUE}uv run python main.py${NC}"
echo ""
echo " 3. Access the admin panel:"
echo " ${BLUE}http://localhost:7860/${NC}"
echo ""
print_info "To activate virtual environment later, run:"
echo " ${BLUE}source .venv/bin/activate${NC}"
fi
echo ""
|