160 lines
5.9 KiB
PowerShell
160 lines
5.9 KiB
PowerShell
|
|
# AZA Desktop – Dev Environment Check
|
|||
|
|
# Prueft ob alle Voraussetzungen fuer die Entwicklung vorhanden sind.
|
|||
|
|
|
|||
|
|
$ErrorActionPreference = "Continue"
|
|||
|
|
$pass = 0
|
|||
|
|
$fail = 0
|
|||
|
|
|
|||
|
|
function Check($name, $condition, $hint) {
|
|||
|
|
if ($condition) {
|
|||
|
|
Write-Host " [PASS] $name" -ForegroundColor Green
|
|||
|
|
$script:pass++
|
|||
|
|
} else {
|
|||
|
|
Write-Host " [FAIL] $name" -ForegroundColor Red
|
|||
|
|
if ($hint) { Write-Host " -> $hint" -ForegroundColor Yellow }
|
|||
|
|
$script:fail++
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Write-Host ""
|
|||
|
|
Write-Host "=============================" -ForegroundColor Cyan
|
|||
|
|
Write-Host " AZA Dev Environment Check" -ForegroundColor Cyan
|
|||
|
|
Write-Host "=============================" -ForegroundColor Cyan
|
|||
|
|
Write-Host ""
|
|||
|
|
|
|||
|
|
# --- Python ---
|
|||
|
|
Write-Host "[Python]" -ForegroundColor White
|
|||
|
|
$pyVer = $null
|
|||
|
|
try {
|
|||
|
|
$pyVer = & python --version 2>&1
|
|||
|
|
$pyFound = $true
|
|||
|
|
} catch { $pyFound = $false }
|
|||
|
|
Check "Python installiert" $pyFound "Python 3.12.x installieren: https://python.org"
|
|||
|
|
|
|||
|
|
if ($pyFound -and $pyVer -match "3\.12\.") {
|
|||
|
|
Check "Python 3.12.x" $true
|
|||
|
|
} elseif ($pyFound) {
|
|||
|
|
Check "Python 3.12.x (aktuell: $pyVer)" $false "Python 3.12.x empfohlen"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# --- venv ---
|
|||
|
|
Write-Host ""
|
|||
|
|
Write-Host "[Virtuelle Umgebung]" -ForegroundColor White
|
|||
|
|
$venvExists = Test-Path ".\.venv\Scripts\python.exe"
|
|||
|
|
Check ".venv vorhanden" $venvExists "python -m venv .venv"
|
|||
|
|
|
|||
|
|
# --- Wichtige Pakete ---
|
|||
|
|
Write-Host ""
|
|||
|
|
Write-Host "[Python-Pakete]" -ForegroundColor White
|
|||
|
|
$packagesToCheck = @(
|
|||
|
|
@{ Name = "fastapi"; Hint = "pip install fastapi" },
|
|||
|
|
@{ Name = "uvicorn"; Hint = "pip install uvicorn" },
|
|||
|
|
@{ Name = "openai"; Hint = "pip install openai" },
|
|||
|
|
@{ Name = "numpy"; Hint = "pip install 'numpy==2.2.5'" },
|
|||
|
|
@{ Name = "sounddevice"; Hint = "pip install sounddevice" },
|
|||
|
|
@{ Name = "soundfile"; Hint = "pip install soundfile" },
|
|||
|
|
@{ Name = "pygame"; Hint = "pip install pygame" },
|
|||
|
|
@{ Name = "lameenc"; Hint = "pip install lameenc" },
|
|||
|
|
@{ Name = "pynput"; Hint = "pip install pynput" },
|
|||
|
|
@{ Name = "pillow"; Hint = "pip install pillow" },
|
|||
|
|
@{ Name = "pyinstaller"; Hint = "pip install pyinstaller==6.13.0" },
|
|||
|
|
@{ Name = "pydantic"; Hint = "pip install pydantic" },
|
|||
|
|
@{ Name = "stripe"; Hint = "pip install stripe" },
|
|||
|
|
@{ Name = "requests"; Hint = "pip install requests" },
|
|||
|
|
@{ Name = "httpx"; Hint = "pip install httpx" },
|
|||
|
|
@{ Name = "lxml"; Hint = "pip install lxml" },
|
|||
|
|
@{ Name = "python-docx"; Hint = "pip install python-docx" },
|
|||
|
|
@{ Name = "bcrypt"; Hint = "pip install bcrypt" },
|
|||
|
|
@{ Name = "cryptography"; Hint = "pip install cryptography" },
|
|||
|
|
@{ Name = "cffi"; Hint = "pip install cffi" },
|
|||
|
|
@{ Name = "SQLAlchemy"; Hint = "pip install SQLAlchemy" }
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
foreach ($pkg in $packagesToCheck) {
|
|||
|
|
$found = & python -c "import importlib; importlib.import_module('$($pkg.Name.Replace('-','_').ToLower())')" 2>&1
|
|||
|
|
$ok = $LASTEXITCODE -eq 0
|
|||
|
|
Check "$($pkg.Name)" $ok "$($pkg.Hint)"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# numpy Version pruefen
|
|||
|
|
Write-Host ""
|
|||
|
|
Write-Host "[numpy Version]" -ForegroundColor White
|
|||
|
|
$npVer = & python -c "import numpy; print(numpy.__version__)" 2>&1
|
|||
|
|
if ($LASTEXITCODE -eq 0) {
|
|||
|
|
$npMajMin = $npVer -replace '(\d+\.\d+)\..*','$1'
|
|||
|
|
$npOk = [double]$npMajMin -lt 2.4
|
|||
|
|
Check "numpy < 2.4 (aktuell: $npVer)" $npOk "WICHTIG: pip install 'numpy==2.2.5' (2.4+ bricht PyInstaller)"
|
|||
|
|
} else {
|
|||
|
|
Check "numpy Version" $false "numpy nicht installiert"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# --- Audio Imports ---
|
|||
|
|
Write-Host ""
|
|||
|
|
Write-Host "[Audio-Imports]" -ForegroundColor White
|
|||
|
|
$audioModules = @("sounddevice", "soundfile", "numpy", "lameenc", "pygame")
|
|||
|
|
foreach ($mod in $audioModules) {
|
|||
|
|
$ok = & python -c "import $mod" 2>&1
|
|||
|
|
Check "import $mod" ($LASTEXITCODE -eq 0) "pip install $mod"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# --- ffmpeg ---
|
|||
|
|
Write-Host ""
|
|||
|
|
Write-Host "[Externe Tools]" -ForegroundColor White
|
|||
|
|
$ffmpegPath = Get-Command "ffmpeg" -ErrorAction SilentlyContinue
|
|||
|
|
Check "ffmpeg im PATH" ($null -ne $ffmpegPath) "winget install Gyan.FFmpeg"
|
|||
|
|
|
|||
|
|
# --- Inno Setup ---
|
|||
|
|
$isccPaths = @(
|
|||
|
|
"${env:ProgramFiles(x86)}\Inno Setup 6\ISCC.exe",
|
|||
|
|
"${env:ProgramFiles}\Inno Setup 6\ISCC.exe",
|
|||
|
|
"C:\Program Files (x86)\Inno Setup 6\ISCC.exe",
|
|||
|
|
"C:\Program Files\Inno Setup 6\ISCC.exe"
|
|||
|
|
)
|
|||
|
|
$isccFound = $false
|
|||
|
|
foreach ($p in $isccPaths) {
|
|||
|
|
if ($p -and (Test-Path $p)) { $isccFound = $true; break }
|
|||
|
|
}
|
|||
|
|
$isccCmd = Get-Command "ISCC.exe" -ErrorAction SilentlyContinue
|
|||
|
|
if ($isccCmd) { $isccFound = $true }
|
|||
|
|
Check "Inno Setup 6 (fuer Installer)" $isccFound "https://jrsoftware.org/isdl.php (optional, nur fuer Installer-Build)"
|
|||
|
|
|
|||
|
|
# --- Projektdateien ---
|
|||
|
|
Write-Host ""
|
|||
|
|
Write-Host "[Projektdateien]" -ForegroundColor White
|
|||
|
|
$requiredFiles = @(
|
|||
|
|
"basis14.py",
|
|||
|
|
"backend_main.py",
|
|||
|
|
"aza_desktop.spec",
|
|||
|
|
"requirements-dev.txt",
|
|||
|
|
"logo.ico",
|
|||
|
|
"logo.png",
|
|||
|
|
"aza_version.py"
|
|||
|
|
)
|
|||
|
|
foreach ($f in $requiredFiles) {
|
|||
|
|
Check $f (Test-Path $f) "Datei fehlt: $f"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# --- Konfiguration ---
|
|||
|
|
Write-Host ""
|
|||
|
|
Write-Host "[Konfiguration]" -ForegroundColor White
|
|||
|
|
Check ".env vorhanden" (Test-Path ".env") "Copy-Item .env.example .env -> dann Werte eintragen"
|
|||
|
|
Check "backend_url.txt" (Test-Path "backend_url.txt") "Datei erstellen mit: http://127.0.0.1:8000"
|
|||
|
|
Check "backend_token.txt" (Test-Path "backend_token.txt") "Token passend zu MEDWORK_API_TOKEN in .env eintragen"
|
|||
|
|
Check "config\aza_runtime.env" (Test-Path "config\aza_runtime.env") "OpenAI API Key eintragen"
|
|||
|
|
|
|||
|
|
# --- Ergebnis ---
|
|||
|
|
Write-Host ""
|
|||
|
|
Write-Host "=============================" -ForegroundColor Cyan
|
|||
|
|
$total = $pass + $fail
|
|||
|
|
Write-Host " Ergebnis: $pass/$total PASS, $fail FAIL" -ForegroundColor $(if ($fail -eq 0) { "Green" } else { "Yellow" })
|
|||
|
|
Write-Host "=============================" -ForegroundColor Cyan
|
|||
|
|
Write-Host ""
|
|||
|
|
|
|||
|
|
if ($fail -eq 0) {
|
|||
|
|
Write-Host "Alles bereit fuer die Entwicklung!" -ForegroundColor Green
|
|||
|
|
} else {
|
|||
|
|
Write-Host "Bitte die FAIL-Punkte oben beheben." -ForegroundColor Yellow
|
|||
|
|
Write-Host "Danach erneut ausfuehren: .\check_dev_environment.ps1" -ForegroundColor Yellow
|
|||
|
|
}
|
|||
|
|
Write-Host ""
|