gm-2api / setup.sh
xiaoyukkkk's picture
Upload 10 files
8cc0fda unverified
#!/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 ""