<# .\tools\run_with_venv.ps1 -Install # create/use .venv and install requirements .\tools\run_with_venv.ps1 -Run -Module pyucc -- -h # run module inside .venv and pass args The script prefers an existing `.venv` directory at the repository root. If missing it will attempt to create it using the system `python` on PATH. #> param( [switch]$Install, [switch]$Run, [string]$Module = "pyucc", [Parameter(ValueFromRemainingArguments=$true)] [string[]]$Args ) function Write-Info($s){ Write-Host $s } $scriptRoot = Split-Path -Parent $MyInvocation.MyCommand.Path $venvPath = Join-Path $scriptRoot ".venv" if (-not (Test-Path $venvPath)) { Write-Info ".venv not found at $venvPath. Creating virtual environment..." & python -m venv $venvPath } $pythonExe = Join-Path $venvPath "Scripts\python.exe" if (-not (Test-Path $pythonExe)) { Write-Info "No python.exe found in .venv; attempting to create virtualenv using current python..." & python -m venv $venvPath } if (-not (Test-Path $pythonExe)) { Write-Error "Failed to find or create a Python executable in .venv. Ensure Python is installed and on PATH." exit 1 } if ($Install) { Write-Info "Installing/Updating requirements using $pythonExe" & $pythonExe -m pip install --upgrade pip $req = Join-Path $scriptRoot "requirements.txt" if (Test-Path $req) { & $pythonExe -m pip install -r $req } else { Write-Info "requirements.txt not found at repo root. Skipping requirements install." } } if ($Run) { Write-Info "Running module: $Module" if ($Args) { & $pythonExe -m $Module @Args } else { & $pythonExe -m $Module } exit $LASTEXITCODE } Write-Info "No action requested. Helpful commands:" Write-Info " Install requirements: .\tools\run_with_venv.ps1 -Install" Write-Info " Run app: .\tools\run_with_venv.ps1 -Run -Module pyucc -- -h" Write-Info " Example: .\tools\run_with_venv.ps1 -Install; .\tools\run_with_venv.ps1 -Run -Module pyucc -- --gui"