Riferimento CLI digna 2026.06¶
2026-09-05
Questa pagina documenta l'insieme completo dei comandi disponibili nella versione 2026.06 della CLI di digna, inclusi esempi d'uso e opzioni.
L'eseguibile si chiama digna.
Nozioni di base sulla CLI¶
Panoramica e sintassi¶
La CLI della versione 2026.06 utilizza una gerarchia di comandi strutturata e basata su categorie:
version e serve sono comandi singoli, privi di sottocomando:
Opzioni globali¶
Le seguenti opzioni globali si applicano a tutti i comandi:
--help,-h: Mostra le informazioni della guida per la CLI o per una specifica categoria di comandi o sottocomando.--stacktrace: In caso di errore mostra l'intera catena di errori anziché il solo messaggio di livello superiore.
--stacktrace è un'opzione globale in senso stretto: va indicata prima della categoria del comando, non dopo.
Non esiste alcun flag --version. Utilizzare invece il comando version.
Prerequisiti¶
La maggior parte dei comandi richiede un file config.toml leggibile e valido; alcuni richiedono inoltre una licenza valida. La tabella seguente riporta ciò che ogni categoria di comandi carica prima di fare qualsiasi cosa:
| Categoria di comandi | Richiede config.toml | Richiede una licenza valida |
|---|---|---|
version | no | no |
config check | no (è proprio ciò su cui il comando riferisce) | no |
license check | no | è la verifica stessa |
crypt | sì | no |
serve | sì | no |
windows | no (il servizio lo legge all'avvio) | no |
project | sì | no |
user | sì | sì |
inspection | sì | sì |
repo | sì | sì |
Dove è richiesta una licenza, vengono verificate sia la sua firma sia la data di scadenza, e il comando si interrompe prima di toccare il repository se una delle due non è valida.
Codici di uscita¶
0: il comando è riuscito.1: il comando è fallito. Il messaggio di errore viene scritto su stderr, preceduto dal prefissoError:.
help¶
L'opzione --help fornisce informazioni sulle categorie di comandi, sui sottocomandi e sulle opzioni disponibili:
-
Visualizzazione della guida generale:
-
Ottenere la guida per categorie e comandi specifici:
L'output include: - Descrizione del comando: Sintesi dello scopo del comando. - Sintassi: Argomenti obbligatori e facoltativi. - Opzioni: Flag e parametri specifici del comando.
version¶
Il comando version stampa la versione di digna installata. Non legge alcuna configurazione e non convalida alcuna licenza, quindi funziona anche su un'installazione il cui config.toml o la cui licenza siano mancanti o non validi.
La versione del prodotto è indipendente dalla versione dello schema del repository riportata da repo check.
Utilizzo del comando¶
Esempio di output¶
Gestione della configurazione¶
config check¶
Il comando config check convalida il file di configurazione (config.toml), verificando che tutte le sezioni e le impostazioni obbligatorie siano presenti e correttamente formattate. Ogni sezione viene convalidata singolarmente, così una sezione [app] danneggiata non nasconde lo stato di [repo].
Le sezioni riportate sono:
App config([app])Repository config([repo])Base config([base])Logging config([logging])Encryption config([encryption])OIDC config(s)(oidc_clients) — facoltativa; una chiave assente supera il controllo, mentre un elenco presente ma malformato non lo supera
Il comando volutamente non carica la configurazione dell'applicazione come fanno gli altri comandi, così da poter diagnosticare un config.toml che impedirebbe a digna perfino di avviarsi.
Utilizzo del comando¶
Opzioni¶
--configpath,-c: Percorso del file di configurazione o di una directory contenenteconfig.toml(predefinito./config.toml).--json: Restituisce il rapporto di convalida in formato JSON. Ha la precedenza su--quiet.--quiet,-q: Sopprime il rapporto e si basa esclusivamente sul codice di uscita.
Esempio¶
Convalidare un file di configurazione specifico e formattare l'output come JSON:
Esempio di output¶
Configuration validation report (source: config.toml):
- App config: OK
- Repository config: OK
- Base config: OK
- Logging config: OK
- Encryption config: FAILED
missing field `aes_gcm_key`
- OIDC config(s): OK
Overall: FAILED
Un file mancante o un errore di sintassi TOML non lascia nulla da convalidare sezione per sezione e viene segnalato come un singolo errore anziché come un rapporto, indipendentemente da --quiet o --json.
Gestione del repository¶
repo check¶
Il comando repo check verifica la connessione al database e controlla l'installazione e la versione del repository. Fallisce se lo schema configurato non esiste, oppure se esiste ma non contiene alcun repository digna.
La versione riportata è quella dello schema del repository, che segue una numerazione separata rispetto alla versione di digna stampata da version.
Utilizzo del comando¶
Esempio di output¶
repo install¶
Il comando repo install installa un nuovo repository digna nello schema configurato in config.toml, creando tutte le sequenze, le tabelle, gli indici, i vincoli e i record iniziali necessari.
Lo schema in sé non viene creato da questo comando: deve esistere in precedenza. Il comando si rifiuta inoltre di essere eseguito se in quello schema è già installato un repository, e rimanda a repo upgrade se la versione installata è precedente.
Utilizzo del comando¶
Esempio di output¶
Installing repo version 3.0.0
✅ Sequences created.
✅ Tables and Indices created.
✅ Constraints created.
✅ Records inserted.
✅ Repo version 3.0.0 successfully installed.
repo upgrade¶
Il comando repo upgrade applica le migrazioni dello schema del database per portare un repository esistente alla versione attesa dalla release installata. Gli aggiornamenti vengono applicati un salto di versione alla volta lungo un percorso di aggiornamento prestabilito, e ogni salto completato viene registrato nel repository.
Se il repository si trova già alla versione attesa, il comando segnala che non è necessario alcun aggiornamento e non apporta modifiche.
Utilizzo del comando¶
Esempio di output¶
Upgrading from 2.3.1 to 2.3.2...
Upgrading from 2.3.2 to 3.0.0...
✅ Repo successfully upgraded to version 3.0.0.
repo prune¶
Il comando repo prune rimuove le righe sopravvissute al progetto o all'origine dati a cui appartenevano. L'eliminazione di un progetto o di un'origine dati rimuove l'oggetto stesso, ma lascia i relativi profili, previsioni, stati e conteggi di righe: una scelta deliberata, perché un'eliminazione che ripulisse anche quelle tabelle farebbe attendere l'utente. repo prune è il passaggio di manutenzione che le ripulisce, e può essere eseguito in qualsiasi momento senza rischi: rimuove soltanto righe il cui progetto o la cui origine dati non esiste più.
Le righe scritte dal backend Python in tabelle che la release attuale non usa più non vengono toccate.
Utilizzo del comando¶
Opzioni¶
--dry-run: Mostra cosa verrebbe rimosso senza rimuovere nulla.
Vengono elencate solo le tabelle con righe orfane. Se non ce ne sono, il comando riporta No orphaned rows found. e termina.
Esempio¶
Esempio di output¶
"check" 29342
check_profile 29342
check_prediction 29342
check_status 29342
column_status 32
inspection_query 253
---------------------------------------------
total 117854
✅ Removed 117854 orphaned row(s).
Per vedere lo stesso rapporto senza rimuovere nulla:
I conteggi delle righe sono identici; cambia solo la riga finale:
Gestione della crittografia¶
crypt gen-key¶
Il comando crypt gen-key genera una nuova chiave di crittografia AES-GCM da utilizzare come chiave di crittografia in config.toml. Deve già essere presente un config.toml caricabile, anche se la chiave generata non dipende da esso.
Utilizzo del comando¶
Esempio di output¶
crypt encrypt¶
Il comando crypt encrypt cifra una stringa (ad esempio una password di database) utilizzando la chiave AES-GCM configurata in config.toml e stampa il testo cifrato.
Utilizzo del comando¶
Argomenti¶
- VALUE: La stringa in chiaro da cifrare (obbligatorio).
Esempio¶
crypt decrypt¶
Il comando crypt decrypt decifra una stringa cifrata con AES-GCM utilizzando la chiave configurata in config.toml e stampa il testo in chiaro.
Utilizzo del comando¶
Argomenti¶
- VALUE: La stringa cifrata da decifrare (obbligatorio).
Esempio¶
Gestione degli utenti¶
user add¶
Il comando user add crea un nuovo account utente nel repository digna. Il comando fallisce se esiste già un utente con l'indirizzo e-mail indicato.
Utilizzo del comando¶
Argomenti¶
- EMAIL: L'indirizzo e-mail dell'utente (obbligatorio).
- PASSWORD: La password iniziale dell'utente (obbligatorio).
- DISPLAY_NAME: Il nome visualizzato completo dell'utente (obbligatorio).
Opzioni¶
--admin,-a: Crea l'utente con privilegi di amministratore (superutente).
Esempio¶
Per creare un account amministratore:
Esempio di output¶
user list¶
Il comando user list elenca tutti gli utenti registrati in formato tabellare con ID, e-mail, nome visualizzato e flag di amministratore.
Utilizzo del comando¶
Esempio di output¶
ID EMAIL DISPLAY NAME ADMIN
-----------------------------------------------------------------------------------------------
42 jdoe@example.com John Doe false
43 admin@example.com Admin User true
user modify¶
Il comando user modify aggiorna il nome visualizzato e i privilegi di amministratore di un account utente esistente, identificato dall'indirizzo e-mail.
Sia il nome visualizzato sia il flag di amministratore vengono sempre scritti. --admin è un interruttore, non un valore: ometterlo revoca i privilegi di amministratore, quindi indicarlo ogni volta che l'utente deve mantenerli o ottenerli.
Utilizzo del comando¶
Argomenti¶
- EMAIL: L'e-mail dell'utente da modificare (obbligatorio).
- DISPLAY_NAME: Il nome visualizzato aggiornato (obbligatorio).
Opzioni¶
--admin,-a: Concede i privilegi di amministratore. Ometterlo per revocarli.--valid-until,-v: Accettato per compatibilità ma attualmente non applicato. Indicarlo stampa un avviso e non modifica nulla.
Esempio¶
Esempio di output¶
user modify-pwd¶
Il comando user modify-pwd aggiorna la password di un account utente esistente.
Utilizzo del comando¶
Argomenti¶
- EMAIL: L'e-mail dell'utente di cui aggiornare la password (obbligatorio).
- PASSWORD: La nuova password (obbligatorio).
Esempio¶
user delete¶
Il comando user delete rimuove un account utente dal sistema.
Utilizzo del comando¶
Argomenti¶
- EMAIL: L'e-mail dell'utente da eliminare (obbligatorio).
Esempio¶
Gestione di progetti e origini dati¶
project list¶
Il comando project list elenca tutti i progetti disponibili nel repository, mostrandone ID, nome e descrizione.
Utilizzo del comando¶
Esempio di output¶
ID NAME DESCRIPTION
------------------------------------------------------------------------------------------------------
7 ProjectA Sales data quality
8 ProjectB Finance data quality
project list-ds¶
Il comando project list-ds elenca tutte le origini dati associate a un determinato progetto, mostrandone ID, nome, tipo, schema e nome della tabella.
Utilizzo del comando¶
Argomenti¶
- PROJECT_NAME: Il nome del progetto di cui elencare le origini dati (obbligatorio). Il nome deve corrispondere esattamente.
Esempio¶
Esempio di output¶
ID NAME KIND SCHEMA TABLE
-------------------------------------------------------------------------------------------------------------
101 orders Table sales orders
102 customers Table sales customers
project export-ds¶
Il comando project export-ds esporta le origini dati di un progetto in un documento JSON.
Se non viene indicato né --table-name né --table-id, vengono esportate tutte le origini dati del progetto.
Utilizzo del comando¶
Argomenti¶
- PROJECT_NAME: Il nome del progetto da cui esportare le origini dati (obbligatorio).
Opzioni¶
--table-name,-n: Nomi delle origini dati da esportare. È possibile indicare più nomi separati da spazi.--table-id,-i: ID delle origini dati da esportare. È possibile indicare più ID separati da spazi.--exportfile,-f: Percorso in cui salvare le origini dati esportate (predefinito:data_sources_export.json).
Esempio¶
Per esportare tutte le origini dati da ProjectA:
Per esportare tabelle specifiche:
Esempio di output¶
project import-ds¶
Il comando project import-ds importa le origini dati da un file di esportazione in un progetto di destinazione e riferisce, oggetto per oggetto, cosa è stato creato, aggiornato o ignorato.
Utilizzo del comando¶
Argomenti¶
- PROJECT_NAME: Nome del progetto di destinazione in cui importare (obbligatorio).
- EXPORT_FILE: Percorso del file di esportazione JSON (obbligatorio).
Opzioni¶
--output-file,-o: File in cui scrivere il rapporto di importazione. Senza di esso, il rapporto viene inviato a stdout.--output-format,-f: Formato del rapporto di importazione —table,jsonocsv(predefinito:table).
Esempio¶
Per ottenere un rapporto leggibile da una macchina:
digna project import-ds ProjectB my_export.json --output-format json --output-file import_report.json
Il rapporto copre quattro livelli di oggetti — origine dati, definizione del set di dati, attributo e regola di convalida — ciascuno con la relativa azione di importazione, il risultato, l'ID dell'oggetto risultante ed eventuali informazioni aggiuntive.
project plan-import-ds¶
Il comando project plan-import-ds mostra un'anteprima dell'importazione di origini dati in un progetto di destinazione, indicando quali oggetti verrebbero creati, aggiornati o ignorati, senza modificare nulla. Accetta lo stesso file di esportazione e le stesse opzioni di rapporto di project import-ds, e aggiunge un numero di passaggio per ogni oggetto pianificato.
Utilizzo del comando¶
Argomenti¶
- PROJECT_NAME: Nome del progetto di destinazione (obbligatorio).
- EXPORT_FILE: Percorso del file di esportazione (obbligatorio).
Opzioni¶
--output-file,-o: File in cui scrivere il piano di importazione. Senza di esso, il piano viene inviato a stdout.--output-format,-f: Formato del piano di importazione —table,jsonocsv(predefinito:table).
Esempio¶
project cleanup¶
Il comando project cleanup rimuove i risultati di ispezione accumulati da un progetto in un intervallo di date: profili, previsioni, conteggi di righe e tutti gli stati di check, attributi, dataset e origini dati. Rimuove esattamente ciò che un'ispezione di quelle date ha scritto, quindi l'intervallo può essere ispezionato di nuovo in seguito per ricostruirlo.
La cronologia di Timeliness e di Schema Tracker non viene rimossa: registra ciò che digna ha osservato in un determinato giorno, non un risultato derivato da esso, quindi la pulizia di un intervallo di date passato la lascia intatta.
Ogni origine dati viene ripulita in una propria transazione, quindi un'esecuzione interrotta lascia origini dati complete anziché un'origine dati ripulita a metà.
Utilizzo del comando¶
Argomenti¶
- PROJECT_NAME: Progetto da ripulire (obbligatorio). Un solo progetto per invocazione.
- FROM_DATE: Prima data per cui rimuovere i risultati,
YYYY-MM-DD(obbligatorio). - TO_DATE: Ultima data per cui rimuovere i risultati, inclusa,
YYYY-MM-DD(obbligatorio).
Opzioni¶
--table-name,-n: Limita la pulizia a queste origini dati. È possibile indicare più nomi separati da spazi.--table-filter: Limita la pulizia alle origini dati il cui nome contiene questa sottostringa.--dry-run: Elenca le origini dati che verrebbero ripulite senza rimuovere nulla.--timing: Mostra quanto tempo ha richiesto la pulizia.
--table-name e --table-filter si combinano in OR: un'origine dati viene ripulita se è indicata per nome o se la sottostringa corrisponde. Il comando non riesce se nessuna origine dati corrisponde, invece di segnalare come riuscita una pulizia che non ha fatto nulla.
Esempio¶
Limitato a una sola origine dati:
Esempio di output¶
Cleaning up project 'ProjectA' from 2026-01-01 to 2026-06-30:
- Table1
- Table2
- Table3
✅ Cleaned up 3 data source(s).
Per vedere quali origini dati verrebbero ripulite senza rimuovere nulla:
Ogni riga è contrassegnata, quindi un'esecuzione di prova non può essere scambiata per una reale:
Cleaning up project 'ProjectA' from 2026-01-01 to 2026-06-30:
- Table1 (dry run, nothing removed)
- Table2 (dry run, nothing removed)
- Table3 (dry run, nothing removed)
Dry run - 3 data source(s) would be cleaned up.
Gestione delle ispezioni¶
inspection run¶
Il comando inspection run crea una richiesta di ispezione per un progetto e un intervallo di date e poi — a seconda delle opzioni indicate — la attende, restituisce immediatamente il controllo oppure la esegue nel proprio processo.
Le tre modalità di esecuzione sono:
- Predefinita (senza flag): la richiesta viene messa in coda per il backend e la CLI la interroga ogni due secondi, stampando l'avanzamento delle attività finché l'ispezione non raggiunge uno stato finale. È necessario un
digna servein esecuzione, altrimenti nessuno preleva la richiesta. --async-mode: la richiesta viene messa in coda e il suo ID viene stampato immediatamente. Utilizzareinspection statusper seguirla.--bypass-backend: l'ispezione viene eseguita dal processo stesso della CLI e non viene messa in coda, quindi non è necessario alcun server in esecuzione.
--async-mode e --bypass-backend si escludono a vicenda.
In tutte le modalità il comando termina con un codice di uscita diverso da zero se l'ispezione non si è conclusa correttamente.
Utilizzo del comando¶
Argomenti¶
- PROJECT_NAME: Il nome del progetto di destinazione (obbligatorio). Il nome deve corrispondere esattamente.
- START_DATE: Data di inizio dell'intervallo nel formato
YYYY-MM-DD(obbligatorio). - END_DATE: Data di fine dell'intervallo nel formato
YYYY-MM-DD(obbligatorio).
Opzioni¶
--table-name: Limita l'ispezione a una sola origine dati del progetto, indicata dal nome dell'origine dati. Senza questa opzione vengono ispezionate tutte le origini dati del progetto.--async-mode: Mette l'ispezione in coda e stampa l'ID della richiesta anziché attenderla. Non può essere combinata con--bypass-backend.--bypass-backend: Esegue l'ispezione direttamente nel processo della CLI anziché metterla in coda per il backend. Non può essere combinata con--async-mode.
Esempio¶
Per inviare un'ispezione asincrona:
Per ispezionare una sola origine dati:
Esempio di output¶
Modalità predefinita:
Inspection request submitted. Waiting for completion (Request ID: 1024)...
Progress: 3/10 tasks completed (0 failed)
Progress: 10/10 tasks completed (0 failed)
Inspection completed successfully.
Inspection successful for project: ProjectA
Modalità asincrona:
inspection status¶
Il comando inspection status interroga lo stato e l'avanzamento delle attività di una richiesta di ispezione a partire dal suo ID.
Utilizzo del comando¶
Argomenti¶
- INSPECTION_REQUEST_ID: L'ID numerico della richiesta di ispezione (obbligatorio).
Esempio¶
Esempio di output¶
Inspection Request ID: 1024
Status: Running
Project ID: 7
Date Range: 2024-01-01 to 2024-01-31
Progress: 3/10 tasks completed (0 failed)
inspection abort¶
Il comando inspection abort richiede l'annullamento delle richieste di ispezione in esecuzione o in attesa. Registra un evento di arresto per ciascuna richiesta interessata; è il backend ad agire di conseguenza, quindi l'interruzione è una richiesta di arresto e non una terminazione immediata.
Utilizzo del comando¶
Argomenti¶
- INSPECTION_REQUEST_ID: L'ID della richiesta di ispezione da interrompere. Obbligatorio a meno che non venga indicato
--killall.
Opzioni¶
--killall: Interrompe tutte le richieste di ispezione attualmente in esecuzione e in attesa. Ha la precedenza su un ID di richiesta indicato insieme a essa.
Esempio¶
Per interrompere una richiesta specifica:
Per interrompere tutte le ispezioni attive e in coda:
Esempio di output¶
--killall riferisce cosa ha fatto; l'interruzione di una singola richiesta non produce output e segnala l'esito positivo tramite il proprio codice di uscita.
Gestione delle licenze¶
license check¶
Il comando license check convalida license.toml, verificandone la firma rispetto alla chiave pubblica fornita con l'installazione e controllando che non sia scaduta. Non legge alcuna configurazione dell'applicazione, quindi funziona anche prima che config.toml sia stato predisposto.
Utilizzo del comando¶
Esempio di output¶
Una firma non valida e una licenza scaduta vengono segnalate come errori distinti, entrambi con codice di uscita 1.
Server e servizi in background¶
serve¶
Il comando serve avvia il server dell'API REST di digna insieme allo scheduler delle ispezioni in background e al gestore delle ispezioni. All'avvio, inoltre, fa fallire ogni ispezione che il repository registra ancora come in esecuzione, poiché nulla può essere sopravvissuto a un processo precedente.
Il comando viene eseguito in primo piano finché non viene arrestato.
Utilizzo del comando¶
Opzioni¶
--address: Indirizzo di rete a cui associare il server dell'API (predefinito:127.0.0.1).--port: Numero della porta su cui rimanere in ascolto (predefinito:8000).
Esempio¶
Esempio di output¶
Gestione del servizio Windows¶
Disponibile solo su Windows. I comandi registrano il backend digna presso il gestore dei servizi di Windows e lo controllano; il servizio stesso esegue serve in background. Ogni comando deve essere eseguito da un Prompt dei comandi con privilegi elevati, e ognuno accetta --name per poter indicare un servizio registrato con un nome diverso da quello predefinito.
windows install¶
Il comando windows install registra digna come servizio di Windows.
L'indirizzo e la porta indicati qui vengono salvati nella registrazione del servizio e sono quelli su cui il servizio si mette in ascolto: non vengono letti da config.toml. Per modificarli in seguito, disinstallate il servizio e installatelo di nuovo.
Utilizzo del comando¶
Opzioni¶
--name: Nome con cui registrare il servizio (predefinito:digna).--display-name: Nome mostrato in services.msc (predefinito:digna).--description: Descrizione mostrata in services.msc (predefinito:digna data quality backend).--address: Indirizzo su cui il servizio espone la sua API (predefinito:127.0.0.1).--port: Porta su cui il servizio espone la sua API (predefinito:8000).--working-dir: Directory che contieneconfig.tomlelicense.toml, che il servizio usa come directory di lavoro (predefinito: la directory dell'eseguibiledigna).--start-type: Quando si avvia il servizio:autocon Windows,manualsolo su richiesta,disabledregistrato ma senza possibilità di avvio (predefinito:auto).--account: Account con cui eseguire il servizio, ad es.DOMAIN\usero.\user(predefinito:LocalSystem).--password: Password di--account.
Esempio¶
Registrazione con un secondo nome, eseguita con un account di dominio:
digna windows install --name digna-test --display-name "digna (test)" --account DOMAIN\svc_digna --password <password>
windows start¶
Il comando windows start avvia un servizio registrato.
Utilizzo del comando¶
Opzioni¶
--name: Nome con cui il servizio è registrato (predefinito:digna).
windows stop¶
Il comando windows stop ferma un servizio in esecuzione. Fermate il servizio prima di sostituire qualsiasi file dell'applicazione.
Utilizzo del comando¶
Opzioni¶
--name: Nome con cui il servizio è registrato (predefinito:digna).
windows uninstall¶
Il comando windows uninstall deregistra il servizio. Fermatelo prima.
Utilizzo del comando¶
Opzioni¶
--name: Nome con cui il servizio è registrato (predefinito:digna).