From 1afaaa0bae47f0921c10c1d1c6811a784c2f9096 Mon Sep 17 00:00:00 2001 From: "Adriano (daitarn)" Date: Sat, 24 Oct 2026 15:09:33 +0200 Subject: [PATCH] packaging: sviluppo.ps1, TMF da sorgente senza build Nuitka (#87 #88) Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01Jbf7qKuxsnAVjxthRy7dnB --- packaging/windows/sviluppo.ps1 | 51 ++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 packaging/windows/sviluppo.ps1 diff --git a/packaging/windows/sviluppo.ps1 b/packaging/windows/sviluppo.ps1 new file mode 100644 index 0000000..2c922cb --- /dev/null +++ b/packaging/windows/sviluppo.ps1 @@ -0,0 +1,51 @@ +<# +Cosa fa: avvia TieMeasureFlow DA SORGENTE su una macchina di sviluppo Windows, senza la build +Nuitka (che richiede ~20 minuti): stessi quattro server e stesse porte dell'exe (8780 web, +8000 backend, 8100 visione, 8765 camera), stessa cartella dati %PROGRAMDATA%\Tielogic\TieMeasureFlow. +Prima dell'avvio: ambiente Python 3.13 in build\venv313 (uv sync, solo con -Sincronizza o se manca), +tailwind.css e traduzioni .mo ricompilati, DLL di WeasyPrint in build\gtk (scaricate con +pdf\prendi-gtk.ps1 se mancano). + +Come si usa (dalla radice del repo): + powershell -ExecutionPolicy Bypass -File packaging\windows\sviluppo.ps1 [-Sincronizza] [-Ascolto 0.0.0.0] +Dopo una modifica: Ctrl+C e rilancio (pochi secondi). Template e JS non richiedono altro; +classi Tailwind nuove e msgid nuovi vengono ricompilati a ogni avvio. + +Dipende da: uv, npx (Node), la licenza tiemeasureflow di QUESTA macchina in +%PROGRAMDATA%\Tielogic\licenze\tiemeasureflow.json (impronta: avvio.py --impronta). +#> +param( + [switch]$Sincronizza, # forza uv sync (dipendenze cambiate) + [string]$Ascolto = '127.0.0.1' # indirizzo di ascolto della UI web ($Host e' riservato in PowerShell) +) +$ErrorActionPreference = 'Stop' +$radice = (Resolve-Path (Join-Path $PSScriptRoot '..\..')).Path +$env:UV_PROJECT_ENVIRONMENT = Join-Path $radice 'build\venv313' # stesso ambiente della build +$py = Join-Path $env:UV_PROJECT_ENVIRONMENT 'Scripts\python.exe' + +if ($Sincronizza -or -not (Test-Path $py)) { + uv sync --python 3.13 --frozen --extra server --extra client --extra vision-worker --group windows + if ($LASTEXITCODE -ne 0) { throw "uv sync fallito" } +} + +# CSS e traduzioni: non sono nel repo, come in build.ps1 +$flask = Join-Path $radice 'src\frontend\flask_app' +Push-Location $flask +try { + npx --yes tailwindcss@3.4.19 -i static/css/input.css -o static/css/tailwind.css --minify + if ($LASTEXITCODE -ne 0) { throw "Tailwind fallito" } + & (Join-Path $env:UV_PROJECT_ENVIRONMENT 'Scripts\pybabel.exe') -q compile -d translations + if ($LASTEXITCODE -ne 0) { throw "pybabel compile fallito" } +} finally { Pop-Location } + +# DLL di WeasyPrint fuori dalla radice (gtk\ nella radice non e' ignorata da git): build\gtk +$gtk = Join-Path $radice 'build\gtk' +if (-not (Test-Path (Join-Path $gtk '*.dll'))) { + powershell -NoProfile -ExecutionPolicy Bypass -File (Join-Path $PSScriptRoot 'pdf\prendi-gtk.ps1') -Destinazione $gtk + if ($LASTEXITCODE -ne 0) { throw "prendi-gtk.ps1 fallito" } +} +$env:WEASYPRINT_DLL_DIRECTORIES = $gtk + +Set-Location $radice +& $py (Join-Path $PSScriptRoot 'avvio.py') --senza-browser --senza-finestre --host $Ascolto # errori in console, niente MessageBox +exit $LASTEXITCODE