82 lines
2.9 KiB
PowerShell
82 lines
2.9 KiB
PowerShell
$AppName = "testium"
|
|
|
|
# 1. Set working directory to the script's location
|
|
$PSScriptRoot = Split-Path -Parent $MyInvocation.MyCommand.Definition
|
|
Set-Location -Path $PSScriptRoot
|
|
|
|
$VenvPath = Join-Path $PSScriptRoot $(Join-Path "test\tmp\" ("$AppName"+"_venv"))
|
|
$Requirements = Join-Path $PSScriptRoot "src\requirements.txt"
|
|
$PythonScript = Join-Path $PSScriptRoot $(Join-Path "src" "$AppName")
|
|
|
|
Write-Host "[1/4] Searching for Python..." -ForegroundColor Cyan
|
|
|
|
# 2. Python detection (checks for 'python' then 'py' launcher)
|
|
$PythonExe = Get-Command python.exe -ErrorAction SilentlyContinue
|
|
if (-not $PythonExe) {
|
|
$PythonExe = Get-Command py.exe -ErrorAction SilentlyContinue
|
|
}
|
|
|
|
if (-not $PythonExe) {
|
|
Write-Host "###########################################################" -ForegroundColor Red
|
|
Write-Host "ERROR: Python was not detected on this system."
|
|
Write-Host "Please install Python and check 'Add Python to PATH'."
|
|
Write-Host "###########################################################" -ForegroundColor Red
|
|
Pause
|
|
exit
|
|
}
|
|
|
|
Write-Host "[+] Python found: $($PythonExe.Source)" -ForegroundColor Green
|
|
|
|
$is_venv = $false
|
|
|
|
# 3. Virtual Environment management
|
|
if (-not (Test-Path $VenvPath)) {
|
|
Write-Host "[2/4] Creating virtual environment..." -ForegroundColor Cyan
|
|
& $PythonExe.Source -m venv $VenvPath
|
|
} else {
|
|
$is_venv = $true
|
|
Write-Host "[2/4] Virtual environment already exists." -ForegroundColor Green
|
|
}
|
|
|
|
# 4. Activation and Dependencies
|
|
Write-Host "[3/4] Activating venv and updating dependencies..." -ForegroundColor Cyan
|
|
$ActivateScript = Join-Path $VenvPath "Scripts\Activate.ps1"
|
|
|
|
# Execute the activation script
|
|
& $ActivateScript
|
|
|
|
if ($env:VIRTUAL_ENV -and (Test-Path $env:VIRTUAL_ENV)) {
|
|
Write-Host "[+] Verified: Running inside venv ($env:VIRTUAL_ENV)" -ForegroundColor Green
|
|
} else {
|
|
Write-Host "ERROR: Failed to activate virtual environment. Aborting install." -ForegroundColor Red
|
|
pause
|
|
exit
|
|
}
|
|
|
|
# 5. Execution
|
|
try {
|
|
if ((Test-Path $Requirements) -and -not $is_venv) {
|
|
Write-Host "[+] Installing requirements..." -ForegroundColor Yellow
|
|
python -m pip install --upgrade pip --quiet
|
|
pip install -r $Requirements
|
|
}
|
|
if (-not (Test-Path $PythonScript)) {
|
|
Write-Host "ERROR: File '$PythonScript' not found in $PSScriptRoot" -ForegroundColor Red
|
|
}
|
|
Write-Host "[4/4] Starting $AppName..." -ForegroundColor Cyan
|
|
Write-Host "-----------------------------------------------------------" -ForegroundColor Gray
|
|
python $PythonScript $args
|
|
}
|
|
catch {
|
|
Write-Host "An error occurred during execution." -ForegroundColor Red
|
|
}
|
|
finally {
|
|
# This runs even if the script fails
|
|
if (Get-Command deactivate -ErrorAction SilentlyContinue) {
|
|
deactivate
|
|
Write-Host "Virtual environment deactivated." -ForegroundColor Gray
|
|
}
|
|
}
|
|
|
|
Write-Host "-----------------------------------------------------------" -ForegroundColor Gray
|
|
Write-Host "$AppName execution finished." |