mirror of
https://github.com/compiler-explorer/compiler-explorer.git
synced 2025-12-27 07:04:04 -05:00
101 lines
3.9 KiB
PowerShell
101 lines
3.9 KiB
PowerShell
# CE Properties Wizard runner script for Windows PowerShell
|
|
|
|
param(
|
|
[Parameter(ValueFromRemainingArguments=$true)]
|
|
[string[]]$Arguments
|
|
)
|
|
|
|
# Get the directory where this script is located
|
|
$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
|
|
Set-Location $ScriptDir
|
|
|
|
# Check if poetry is installed
|
|
if (-not (Get-Command poetry -ErrorAction SilentlyContinue)) {
|
|
Write-Host "Poetry is not installed. Installing Poetry..." -ForegroundColor Yellow
|
|
|
|
# Check if Python is available
|
|
$pythonCmd = $null
|
|
foreach ($cmd in @("python", "python3", "py")) {
|
|
if (Get-Command $cmd -ErrorAction SilentlyContinue) {
|
|
$pythonCmd = $cmd
|
|
break
|
|
}
|
|
}
|
|
|
|
if (-not $pythonCmd) {
|
|
Write-Host "Python is not installed. Please install Python first." -ForegroundColor Red
|
|
exit 1
|
|
}
|
|
|
|
try {
|
|
# Download and install Poetry
|
|
Write-Host "Downloading Poetry installer..." -ForegroundColor Green
|
|
$poetryInstaller = Invoke-RestMethod -Uri https://install.python-poetry.org
|
|
$poetryInstaller | & $pythonCmd -
|
|
|
|
# Update PATH for current session
|
|
$env:Path = "$env:APPDATA\Python\Scripts;$env:Path"
|
|
|
|
# Verify installation
|
|
if (-not (Get-Command poetry -ErrorAction SilentlyContinue)) {
|
|
Write-Host "Poetry installation failed. Please install manually from https://python-poetry.org/docs/#installation" -ForegroundColor Red
|
|
exit 1
|
|
}
|
|
|
|
Write-Host "Poetry installed successfully!" -ForegroundColor Green
|
|
} catch {
|
|
Write-Host "Failed to install Poetry automatically: $_" -ForegroundColor Red
|
|
Write-Host "Please install manually from https://python-poetry.org/docs/#installation" -ForegroundColor Yellow
|
|
exit 1
|
|
}
|
|
}
|
|
|
|
# Install dependencies if needed
|
|
if (-not (Test-Path ".venv")) {
|
|
Write-Host "Setting up virtual environment..." -ForegroundColor Green
|
|
# On Windows, use --only main to skip dev dependencies and avoid pytype build issues
|
|
poetry install --only main
|
|
Write-Host "Note: Development dependencies skipped on Windows (pytype doesn't build on Windows)" -ForegroundColor Yellow
|
|
}
|
|
|
|
# Check if we're running under Git Bash (which can cause issues with Poetry)
|
|
$isGitBash = $false
|
|
if ($env:SHELL -match "bash" -or $env:MSYSTEM) {
|
|
$isGitBash = $true
|
|
Write-Host "Warning: Git Bash detected. This may cause issues with Poetry." -ForegroundColor Yellow
|
|
|
|
# Find the virtual environment
|
|
$venvPython = Join-Path $ScriptDir ".venv\Scripts\python.exe"
|
|
if (-not (Test-Path $venvPython)) {
|
|
# Check Poetry's cache location
|
|
$poetryVenvs = "$env:LOCALAPPDATA\pypoetry\Cache\virtualenvs"
|
|
$venvDir = Get-ChildItem $poetryVenvs -Directory -ErrorAction SilentlyContinue | Where-Object { $_.Name -like "ce-properties-wizard*" } | Select-Object -First 1
|
|
if ($venvDir) {
|
|
$venvPython = Join-Path $venvDir.FullName "Scripts\python.exe"
|
|
}
|
|
}
|
|
|
|
if (Test-Path $venvPython) {
|
|
Write-Host "Using Python at: $venvPython" -ForegroundColor Green
|
|
# Set UTF-8 encoding for Python to handle Unicode characters
|
|
$env:PYTHONIOENCODING = "utf-8"
|
|
if ($Arguments) {
|
|
& $venvPython -m ce_properties_wizard.main @Arguments
|
|
} else {
|
|
& $venvPython -m ce_properties_wizard.main
|
|
}
|
|
} else {
|
|
Write-Host "Could not find Python executable in virtual environment" -ForegroundColor Red
|
|
Write-Host "This might be due to Git Bash compatibility issues with Poetry on Windows" -ForegroundColor Yellow
|
|
Write-Host "Please run this script in a native PowerShell window instead" -ForegroundColor Yellow
|
|
exit 1
|
|
}
|
|
} else {
|
|
# Run the wizard with all arguments passed through
|
|
if ($Arguments) {
|
|
poetry run ce-props-wizard @Arguments
|
|
} else {
|
|
poetry run ce-props-wizard
|
|
}
|
|
}
|