Skip to content

Script

scripts/bootstrap_dev_environment.py

Sincronizza l'ambiente gestito da uv, configura lo stato Git locale ed esegue opzionalmente la validazione.

Lo script verifica la radice del repository ed esegue uv pip check dopo la sincronizzazione delle dipendenze. Legge i prerequisiti di sistema da [tool.sanikey.bootstrap.system-dependencies] in pyproject.toml: su Fedora, se necessario, installa uv e pandoc tramite sudo dnf, poi assicura Python 3.13 tramite uv python install 3.13. Per un clone nuovo avviarlo con python3 scripts/bootstrap_dev_environment.py, così l'avvio non dipende già da uv o dall'interprete gestito dal progetto.

scripts/install_repo_git_config.py

Installa la configurazione Git locale attesa dal progetto generato, inclusi hook, template di commit e alias autorizzati.

scripts/run_repo_tool.py

Esegue gli strumenti autorizzati del repository mantenendo cache e stato temporaneo fuori dal checkout.

scripts/validate_repo.py

Esegue la sequenza standard di validazione locale tramite scripts/run_repo_tool.py.

Stato:

  • installato come git check dallo script di bootstrap
  • esegue scripts/privacy_guard.py per bloccare dati locali e path host-locali in file tracciati o nuovi non ignorati che finirebbero nel commit
  • aggiorna l'indice Codira ed esegue codira audit
  • esegue la suite di test sotto coverage ed emette .coverage-report.json
  • esclude Semgrep per default; rigenerare con --with-semgrep per attivarlo

Il guard privacy controlla il contenuto che Git vede come tracciato o nuovo non ignorato. Blocca directory private versionate, per esempio local-data/ o config/, e riferimenti a path locali dell'host come home directory POSIX/Windows o path costruiti dalla variabile d'ambiente HOME. Non classifica semanticamente qualunque testo clinico: dati reali, screenshot e log devono restare fuori dai file tracciati.

scripts/privacy_guard.py

Valida gli invarianti privacy applicabili al contenuto che può entrare in un commit. Lo script è richiamato da scripts/validate_repo.py, ma può essere eseguito anche direttamente per isolare una violazione.

scripts/coverage_summary.py

Renderizza un riepilogo compatto della coverage da .coverage-report.json e applica la soglia di coverage del repository.

scripts/clean_repo.py

Rimuove artefatti ignorati di build e cache preservando directory locali protette come .venv.

scripts/generate_cheatsheet.py

Rigenera docs/cheatsheet.md dai frammenti marcati nella documentazione.

scripts/new_decision.py

Crea una nuova nota decisionale in docs/decisions/ e aggiorna l'indice.

scripts/pyproject_lint.py

Esegue la validazione strutturale deterministica di pyproject.toml.

scripts/replace_usb_logo.py

Sostituisce il logo in tutte le pagine paziente di una chiavetta SaniKey gia' esportata, ricostruisce i checksum del manifest e valida il risultato. Accetta un file SVG, il mountpoint della chiavetta e una percentuale opzionale per la dimensione del logo:

uv run python scripts/replace_usb_logo.py immagini/SaniKey-logo-horizontal-transparent.svg /media/SANIKEY
uv run python scripts/replace_usb_logo.py immagini/SaniKey-logo-horizontal-transparent.svg /media/SANIKEY 150

Il comando agisce esclusivamente sui pazienti elencati nel manifest della chiavetta e aggiorna assets/sanikey-logo-horizontal-transparent.svg per ciascuno di essi. La percentuale predefinita e' 100: 150 ingrandisce il logo del 50%, mentre 75 lo riduce al 75% della dimensione corrente.

scripts/prepare_usb.py

Elenca le chiavette USB e prepara quella scelta con una singola partizione MBR exFAT. L'etichetta predefinita e' SANIKEY, modificabile con --label. Se la chiavetta ha gia' una sola partizione MBR/exFAT con l'etichetta richiesta e inizio esatto a 1 MiB, non modifica nulla; esegue anche un controllo exFAT in sola lettura. Se serve solo l'etichetta, la aggiorna senza formattare. Negli altri casi richiede due conferme testuali prima di cancellare partizioni e dati.

uv run python scripts/prepare_usb.py --list
sudo uv run python scripts/prepare_usb.py --device /dev/sdX
sudo uv run python scripts/prepare_usb.py --device /dev/sdX --label ARCHIVIO

Al termine stampa l'UUID effettivo e una riga TOML da copiare in [global.usb] di config/accounts.toml. Il supporto resta smontato.

scripts/release_audit.py

Esegue controlli conservativi prima di inviare tag o pubblicare. Include il guard privacy SaniKey sui contenuti candidati al commit, oltre a working tree, allineamento del ramo, tag e changelog.

Questo script implementa git release-audit.

scripts/release_rel.py

Implementa il percorso controllato git rel per main: aggiorna dal remoto, esegue l'audit e invia il ramo con il bypass strettamente locale dell'hook. Il bypass abilita anche l'anteprima Semantic Release, senza pubblicare nulla. Versione, changelog, tag e release GitHub sono creati dalla CI; terminato il workflow, eseguire git pull --ff-only && uv sync && uv run sanikey -V.

scripts/release_preview.py

Esegue semantic-release --dry-run con la configurazione del repository. Le credenziali GitHub sono decrittate da SOPS soltanto nell'ambiente del processo Semantic Release; l'helper e l'hook non le ricevono. L'hook lo invoca soltanto per ALLOW_MAIN_PUSH=1, impostato dal percorso git rel.

scripts/release_system_selfcheck.py

Implementa git release-check. Controlla hook, alias, strumenti di rilascio, versione dinamica da setuptools-scm, configurazione Semantic Release e i marker di protezione della push.

scripts/tag_guard.sh

Valida che un tag di rilascio rispetti il pattern atteso vX.Y.Z.

scripts/changelog_guard.sh

Valida che CHANGELOG.md contenga la sezione attesa Unreleased.