Files
compiler-explorer/etc/scripts/ce-properties-wizard/run.ps1

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