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 ""