projet crepp_git/crepp-projects/station-meteo/hardware/transmetteur/base/v1.1 · branche main
preview.ps1 Voir sur GitLab
# Previsualisation locale du site de cette carte, sans serveur web (Windows / PowerShell).
# La page est 100% statique : on l'ouvre directement en file:// dans le navigateur.
#
# Usage (depuis la racine du repo, dans PowerShell) :
#   .\scripts\preview.ps1
#
# Si kicad-cli n'est pas installe sur ta machine, le script utilise
# automatiquement l'image Docker officielle kicad/kicad:10.0.0 (necessite Docker Desktop).

$ErrorActionPreference = "Stop"
$repoDir = (Get-Location).Path

if (-not (Test-Path "scripts\export_board.py") -or -not (Test-Path "scripts\generate_page.py")) {
    Write-Error "Lance ce script depuis la racine du repo (dossier scripts introuvable ici)."
    exit 1
}

Write-Host "-> Export KiCad (schema, PCB, BOM interactive, STEP, rendu)..." -ForegroundColor Cyan

$kicadCli = Get-Command kicad-cli -ErrorAction SilentlyContinue
if ($kicadCli) {
    Write-Host "   kicad-cli trouve localement."
    if (-not (Get-Command generate_interactive_bom -ErrorAction SilentlyContinue)) {
        pip install --user InteractiveHtmlBom -q
    }
    python scripts\export_board.py
} else {
    Write-Host "   kicad-cli absent -> utilisation de Docker (image kicad/kicad:10.0.0)."
    $docker = Get-Command docker -ErrorAction SilentlyContinue
    if (-not $docker) {
        Write-Error "Ni kicad-cli ni Docker Desktop ne sont disponibles sur cette machine."
        exit 1
    }
    docker run --rm --user root -v "${repoDir}:/work" -w /work kicad/kicad:10.0.0 bash -c `
        "(apt-get update -qq && apt-get install -y -qq xvfb python3-pip) || echo '[avertissement] apt-get a echoue, on tente sans'; (pip3 install --break-system-packages InteractiveHtmlBom -q || pip3 install InteractiveHtmlBom -q || pip install InteractiveHtmlBom -q || echo '[avertissement] InteractiveHtmlBom non installe'); python3 scripts/export_board.py"
}

Write-Host "-> Generation de la page (public\)..." -ForegroundColor Cyan
pip install --user openpyxl -q 2>$null
python scripts\generate_page.py --output public

$indexPath = Join-Path $repoDir "public\index.html"
if (-not (Test-Path $indexPath)) {
    Write-Error "public\index.html n'a pas ete genere, verifie les erreurs ci-dessus."
    exit 1
}

Write-Host "-> Ouverture locale (sans serveur) : $indexPath" -ForegroundColor Green
Start-Process $indexPath