forked from starsvictor/NexusAPI
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup.sh
More file actions
172 lines (150 loc) · 4.52 KB
/
setup.sh
File metadata and controls
172 lines (150 loc) · 4.52 KB
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
#!/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 ""