-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathsetup.ps1
More file actions
218 lines (182 loc) · 6.1 KB
/
setup.ps1
File metadata and controls
218 lines (182 loc) · 6.1 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
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
#Requires -Version 5.1
<#
.SYNOPSIS
CodeGrok MCP Setup Script for Windows
.DESCRIPTION
Sets up Python virtual environment and installs all dependencies for CodeGrok MCP.
.PARAMETER Clean
Remove existing virtual environment before creating new
.PARAMETER Prod
Install production dependencies only (skip dev deps)
.PARAMETER NoVerify
Skip verification step
.EXAMPLE
.\setup.ps1
# Default: create venv + install with dev deps
.EXAMPLE
.\setup.ps1 -Clean
# Remove existing venv before creating new
.EXAMPLE
.\setup.ps1 -Prod
# Install production dependencies only
.EXAMPLE
.\setup.ps1 -Clean -Prod -NoVerify
# Clean install, production only, skip verification
#>
param(
[switch]$Clean,
[switch]$Prod,
[switch]$NoVerify,
[switch]$Help
)
# Configuration
$VenvDir = ".venv"
$MinPythonVersion = [version]"3.10"
# Colors
function Write-ColorOutput {
param(
[string]$Message,
[string]$Color = "White"
)
Write-Host $Message -ForegroundColor $Color
}
function Write-Step {
param(
[int]$Step,
[int]$Total,
[string]$Message
)
Write-Host "[$Step/$Total] " -ForegroundColor Blue -NoNewline
Write-Host $Message
}
function Write-Success {
param([string]$Message)
Write-Host "✓ $Message" -ForegroundColor Green
}
function Write-Error {
param([string]$Message)
Write-Host "✗ $Message" -ForegroundColor Red
}
function Write-Warning {
param([string]$Message)
Write-Host "⚠ $Message" -ForegroundColor Yellow
}
# Show help
if ($Help) {
Get-Help $MyInvocation.MyCommand.Path -Detailed
exit 0
}
# Header
Write-Host ""
Write-Host "╔═══════════════════════════════════════════════════════════╗" -ForegroundColor Cyan
Write-Host "║ CodeGrok MCP - Environment Setup ║" -ForegroundColor Cyan
Write-Host "╚═══════════════════════════════════════════════════════════╝" -ForegroundColor Cyan
Write-Host ""
# Step 1: Check Python version
Write-Step 1 5 "Checking Python version..."
$pythonCmd = $null
foreach ($cmd in @("python", "python3", "py")) {
try {
$version = & $cmd --version 2>$null
if ($version) {
$pythonCmd = $cmd
break
}
} catch {
continue
}
}
if (-not $pythonCmd) {
Write-Error "Python not found. Please install Python $MinPythonVersion or higher."
exit 1
}
# Get Python version
$versionString = & $pythonCmd -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')"
$pythonVersion = [version]$versionString
if ($pythonVersion -lt $MinPythonVersion) {
Write-Error "Python $MinPythonVersion+ required. Found: $versionString"
exit 1
}
Write-Success "Python $versionString detected ($pythonCmd)"
# Step 2: Handle existing venv
Write-Step 2 5 "Setting up virtual environment..."
if (Test-Path $VenvDir) {
if ($Clean) {
Write-Warning "Removing existing virtual environment..."
Remove-Item -Recurse -Force $VenvDir
Write-Success "Old venv removed"
} else {
Write-Warning "Virtual environment already exists. Use -Clean to recreate."
}
}
if (-not (Test-Path $VenvDir)) {
Write-Host " Creating virtual environment in $VenvDir..."
& $pythonCmd -m venv $VenvDir
Write-Success "Virtual environment created"
} else {
Write-Success "Using existing virtual environment"
}
# Step 3: Activate venv and upgrade pip
Write-Step 3 5 "Activating environment and upgrading pip..."
# Activate virtual environment
$activateScript = Join-Path $VenvDir "Scripts\Activate.ps1"
if (-not (Test-Path $activateScript)) {
Write-Error "Virtual environment activation script not found"
exit 1
}
. $activateScript
# Upgrade pip
& pip install --upgrade pip --quiet
$pipVersion = & pip --version
$pipVersionNum = ($pipVersion -split " ")[1]
Write-Success "pip upgraded to $pipVersionNum"
# Step 4: Install dependencies
Write-Step 4 5 "Installing dependencies..."
if ($Prod) {
Write-Host " Installing production dependencies..."
& pip install -e . --quiet
Write-Success "Production dependencies installed"
} else {
Write-Host " Installing all dependencies (including dev)..."
& pip install -e ".[dev]" --quiet
Write-Success "All dependencies installed (including dev tools)"
}
# Step 5: Verify installation
if ($NoVerify) {
Write-Step 5 5 "Skipping verification (-NoVerify)"
} else {
Write-Step 5 5 "Verifying installation..."
# Check if codegrok-mcp command works
try {
$null = & codegrok-mcp --help 2>$null
Write-Success "codegrok-mcp CLI verified"
} catch {
Write-Error "codegrok-mcp CLI verification failed"
exit 1
}
# Check key imports
try {
& $pythonCmd -c "from codegrok_mcp import SourceRetriever; print('OK')" 2>$null | Out-Null
Write-Success "Core imports verified"
} catch {
Write-Error "Import verification failed"
exit 1
}
}
# Success message
Write-Host ""
Write-Host "╔═══════════════════════════════════════════════════════════╗" -ForegroundColor Green
Write-Host "║ Setup Complete! ✓ ║" -ForegroundColor Green
Write-Host "╚═══════════════════════════════════════════════════════════╝" -ForegroundColor Green
Write-Host ""
Write-Host "To activate the environment:"
Write-Host " .\" -NoNewline; Write-Host "$VenvDir\Scripts\Activate.ps1" -ForegroundColor Cyan
Write-Host ""
Write-Host "To start using CodeGrok MCP:"
Write-Host " codegrok-mcp --help" -ForegroundColor Cyan
Write-Host ""
if (-not $Prod) {
Write-Host "To run tests:"
Write-Host " pytest" -ForegroundColor Cyan
Write-Host ""
}