Files
aitrailer/setup_venv.ps1
T
2026-05-02 11:46:33 +02:00

108 lines
4.1 KiB
PowerShell

# setup_venv.ps1 — AI Trailer Generator v2 — Virtual Environment Setup
# Run once: .\setup_venv.ps1
# -----------------------------------------------------------------------
# If blocked by ExecutionPolicy:
# Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
$ErrorActionPreference = "Stop"
$VENV_DIR = ".venv"
function Resolve-ProjectPython {
$cmd = Get-Command python -ErrorAction SilentlyContinue
if ($cmd) {
return $cmd.Source
}
$candidates = @(
"$env:LOCALAPPDATA\Programs\Python\Python311\python.exe",
"$env:LOCALAPPDATA\Microsoft\WindowsApps\python.exe"
)
foreach ($candidate in $candidates) {
if ($candidate -and (Test-Path $candidate)) {
return $candidate
}
}
throw "Python 3.11+ not found. Install Python 3.11+ or add it to PATH."
}
Write-Host ""
Write-Host "==================================================" -ForegroundColor Cyan
Write-Host " AI Trailer Generator v2 — venv Setup" -ForegroundColor Cyan
Write-Host "==================================================" -ForegroundColor Cyan
Write-Host ""
# ---- 1. Check Python version ------------------------------------------------
$PROJECT_PYTHON = Resolve-ProjectPython
$pythonVersion = & $PROJECT_PYTHON --version 2>&1
Write-Host "Python: $pythonVersion"
if ($pythonVersion -notmatch "3\.(1[1-9]|[2-9]\d)") {
Write-Error "Python 3.11+ required. Found: $pythonVersion"
exit 1
}
# ---- 2. Create venv ---------------------------------------------------------
if (Test-Path $VENV_DIR) {
$existingVenvPython = Join-Path $VENV_DIR "Scripts\python.exe"
$venvOk = $false
if (Test-Path $existingVenvPython) {
try {
$existingVersion = & $existingVenvPython --version 2>&1
$venvOk = $LASTEXITCODE -eq 0 -and $existingVersion -match "3\.(1[1-9]|[2-9]\d)"
} catch {
$venvOk = $false
}
}
if ($venvOk) {
Write-Host "Virtual environment already exists at '$VENV_DIR'. Skipping creation." -ForegroundColor Yellow
} else {
Write-Host "Existing virtual environment is not usable. Recreating '$VENV_DIR' ..." -ForegroundColor Yellow
Remove-Item -LiteralPath $VENV_DIR -Recurse -Force
& $PROJECT_PYTHON -m venv $VENV_DIR
Write-Host "Done." -ForegroundColor Green
}
} else {
Write-Host "Creating virtual environment in '$VENV_DIR' ..." -ForegroundColor Green
& $PROJECT_PYTHON -m venv $VENV_DIR
Write-Host "Done." -ForegroundColor Green
}
# ---- 3. Activate venv -------------------------------------------------------
$activate = Join-Path $VENV_DIR "Scripts\Activate.ps1"
Write-Host "Activating virtual environment ..."
. $activate
$VENV_PYTHON = Join-Path $VENV_DIR "Scripts\python.exe"
# ---- 4. Upgrade pip ---------------------------------------------------------
Write-Host "Upgrading pip ..." -ForegroundColor Green
& $VENV_PYTHON -m pip install --upgrade pip --quiet
# ---- 5. Install dependencies ------------------------------------------------
Write-Host "Installing dependencies from requirements.txt ..." -ForegroundColor Green
& $VENV_PYTHON -m pip install -r requirements.txt
# ---- 6. Copy .env if missing ------------------------------------------------
if (-not (Test-Path ".env")) {
if (Test-Path ".env.example") {
Copy-Item ".env.example" ".env"
Write-Host ""
Write-Host " .env created from .env.example." -ForegroundColor Yellow
Write-Host " >>> Open .env and fill in your OPENROUTER_API_KEY! <<<" -ForegroundColor Red
}
}
# ---- 7. Done ----------------------------------------------------------------
Write-Host ""
Write-Host "==================================================" -ForegroundColor Cyan
Write-Host " Setup complete!" -ForegroundColor Green
Write-Host ""
Write-Host " Activate the venv with:"
Write-Host " .\.venv\Scripts\Activate.ps1" -ForegroundColor White
Write-Host ""
Write-Host " Then run the pipeline:"
Write-Host " python cli.py run --no-audio --no-llm" -ForegroundColor White
Write-Host "==================================================" -ForegroundColor Cyan
Write-Host ""