6. Interfaccia a riga di comando (CLI)

6.1. Introduzione

blunderDB include un’interfaccia a riga di comando (CLI) completa nello stesso eseguibile dell’interfaccia grafica. La CLI è particolarmente utile per:

  • l’import in massa di match: importare un’intera cartella di file di match (XG, SGF, MAT, BGF…) con un solo comando,

  • l’automazione: integrare blunderDB in script shell per backup periodici, export pianificati o catene di elaborazione,

  • l’uso su server: gestire database su macchine prive di ambiente grafico,

  • l’ispezione rapida: verificare il contenuto o l’integrità di un database senza avviare l’interfaccia grafica.

La CLI condivide esattamente lo stesso formato di database dell’interfaccia grafica. Qualsiasi operazione eseguita tramite la CLI è immediatamente visibile nell’interfaccia grafica e viceversa.

6.2. Sintassi generale

La modalità viene rilevata automaticamente: se il primo argomento è un comando CLI, blunderDB si avvia in modalità headless, altrimenti avvia l’interfaccia grafica.

# Mode graphique (aucun argument)
./blunderdb

# Mode CLI
./blunderdb <commande> [options]

6.3. Comandi disponibili

Comando

Descrizione

create

Crea un nuovo database.

import

Importa dati (match, posizione, lotto).

export

Esporta dati.

search

Cerca posizioni con filtri.

list

Mostra il contenuto del database.

match

Mostra le posizioni e le analisi di un match.

info

Mostra i metadati del database.

edit

Modifica i metadati del database.

verify

Verifica l’integrità del database.

delete

Elimina dati.

help

Mostra la guida.

version

Mostra la versione.

Ogni comando accetta l’opzione --help per mostrare la propria guida dettagliata.

6.4. create — Creare un database

Crea un nuovo file di database con metadati opzionali.

./blunderdb create --db <chemin> [--user <nom>] [--description <texte>] [--force]

Opzioni:

  • --db — Percorso del file di database da creare (obbligatorio).

  • --user — Nome del proprietario del database.

  • --description — Descrizione del database.

  • --force — Sovrascrivere il file se esiste già.

L’estensione .db viene aggiunta automaticamente se assente. Le cartelle superiori vengono create se necessario.

Esempio:

./blunderdb create --db mes_matchs.db --user "Jean" --description "Matchs de tournoi 2025"

6.5. import — Importare dati

Importa file di match o di posizioni nel database.

./blunderdb import --db <chemin> --type <type> [options]

Opzioni:

  • --db — Percorso del database (obbligatorio).

  • --type — Tipo di import: match, position o batch (obbligatorio).

  • --file — File da importare (per match e position).

  • --dir — Cartella da importare (per batch).

  • --recursive — Scansionare ricorsivamente le sottocartelle (predefinito: sì).

6.5.1. Import di un match

Formati supportati: eXtreme Gammon (.xg, .xgp), GNUbg (.sgf), Jellyfish (.mat, .txt) e BGBlitz (.bgf).

./blunderdb import --db base.db --type match --file match.xg

6.5.2. Import di posizioni

Importa posizioni da un file di testo (una posizione JSON per riga):

./blunderdb import --db base.db --type position --file positions.txt

6.5.3. Import in lotto

Importa tutti i file di match di una cartella in una sola operazione. È il metodo più efficiente per importare un gran numero di match.

# Import récursif (par défaut)
./blunderdb import --db base.db --type batch --dir ./matchs/

# Import non récursif
./blunderdb import --db base.db --type batch --dir ./matchs/ --recursive=false

Una tabella riepilogativa indica per ogni file se l’import è riuscito (✓), fallito (✗) o se si tratta di un duplicato (⊘).

6.6. export — Esportare dati

Esporta il contenuto del database in file.

./blunderdb export --db <chemin> --type <type> --file <sortie> [options]

Opzioni:

  • --db — Database di origine (obbligatorio).

  • --type — Tipo di export: database, positions o matches (obbligatorio).

  • --file — File di output (obbligatorio).

  • --analysis — Includere le analisi (predefinito: sì).

  • --comments — Includere i commenti (predefinito: sì).

  • --filters — Includere la libreria di filtri (predefinito: sì).

  • --played-moves — Includere le mosse giocate (predefinito: sì).

  • --matches — Includere i match (predefinito: sì).

  • --collections — Includere le collezioni (predefinito: no).

  • --collection-ids — ID delle collezioni da esportare (separati da virgole).

  • --match-ids — ID dei match da esportare (separati da virgole, vuoto = tutti).

  • --tournament-ids — ID dei tornei da esportare (separati da virgole).

Esempi:

# Export complet de la base
./blunderdb export --db base.db --type database --file sauvegarde.db

# Export des positions en JSON
./blunderdb export --db base.db --type positions --file positions.txt

# Export de matchs spécifiques
./blunderdb export --db base.db --type matches --file selection.db --match-ids 1,3,5

6.7. search — Cercare posizioni

Cerca posizioni nel database secondo criteri combinabili.

./blunderdb search --db <chemin> [options]

Opzioni principali:

  • --db — Database (obbligatorio).

  • --format — Formato di output: table, json o xgid (predefinito: table).

  • --limit — Numero massimo di risultati (0 = illimitato).

  • --export — Esportare i risultati in un nuovo database.

Filtri disponibili:

  • --decision — Tipo di decisione: checker o cube.

  • --dice — Lancio dei dadi. 5,3 cerca le posizioni in cui entrambi i dadi corrispondono (in qualsiasi ordine). 5 cerca le posizioni in cui un 5 compare su uno dei due dadi (il valore del secondo dado viene ignorato). Implica --decision checker se non viene fornito alcun valore di --decision.

  • --pip-min / --pip-max — Intervallo di differenza del pip count.

  • --winrate-min / --winrate-max — Intervallo della percentuale di vittoria (%).

  • --cube — Valore del cubo.

  • --score1 / --score2 — Punteggi dei giocatori.

  • --match-length — Lunghezza del match.

  • --error-min — Errore di equity minimo.

  • --move-error-min / --move-error-max — Errore della mossa giocata (millipunti).

  • --has-analysis — Solo le posizioni con analisi.

  • --off1-min / --off2-min — Pedine uscite minime (giocatore 1/2).

  • --match-ids — Filtrare per ID dei match (separati da virgole).

  • --tournament-ids — Filtrare per ID dei tornei (separati da virgole).

Esempi:

# Rechercher les décisions de videau
./blunderdb search --db base.db --decision cube

# Rechercher les positions avec erreur >= 0.1
./blunderdb search --db base.db --error-min 0.1

# Rechercher dans un tournoi et exporter
./blunderdb search --db base.db --tournament-ids 1 --export cubes.db

# Rechercher les positions avec un lancer de dés 6-5 (peu importe l'ordre)
./blunderdb search --db base.db --dice 6,5

# Rechercher les positions où un 6 a été obtenu sur l'un des deux dés
./blunderdb search --db base.db --dice 6

# Sortie JSON limitée à 10 résultats
./blunderdb search --db base.db --format json --limit 10

6.8. list — Elencare il contenuto

Mostra il contenuto del database.

./blunderdb list --db <chemin> --type <type> [--limit <n>]

Tipi:

  • matches — Elenco dei match importati.

  • positions — Elenco delle posizioni (limitato a 10 per impostazione predefinita).

  • stats — Statistiche globali (posizioni, analisi, match, partite, mosse).

Esempi:

# Statistiques de la base
./blunderdb list --db base.db --type stats

# Liste des matchs
./blunderdb list --db base.db --type matches

# Premières 20 positions
./blunderdb list --db base.db --type positions --limit 20

6.9. match — Visualizzare un match

Mostra le posizioni e le analisi di un match importato.

./blunderdb match --db <chemin> --id <id_match> [--format <format>] [--output <fichier>]

Opzioni:

  • --db — Database (obbligatorio).

  • --id — ID del match da visualizzare (obbligatorio).

  • --format — Formato di output: json, text o summary (predefinito: json).

  • --output — File di output (predefinito: output standard).

Esempi:

# Résumé d'un match
./blunderdb match --db base.db --id 1 --format summary

# Détails de chaque position
./blunderdb match --db base.db --id 1 --format text

# Export JSON vers un fichier
./blunderdb match --db base.db --id 1 --output match1.json

6.10. info — Metadati del database

Mostra i metadati e le statistiche di un database.

./blunderdb info --db <chemin> [--format <format>]

Opzioni:

  • --db — Database (obbligatorio).

  • --format — Formato di output: text o json (predefinito: text).

Esempi:

# Afficher les informations
./blunderdb info --db base.db

# Sortie JSON (pour un script)
./blunderdb info --db base.db --format json

6.11. edit — Modificare i metadati

Modifica il nome utente o la descrizione di un database.

./blunderdb edit --db <chemin> [options]

Opzioni:

  • --db — Database (obbligatorio).

  • --user — Nuovo nome utente.

  • --description — Nuova descrizione.

  • --clear-user — Cancellare il nome utente.

  • --clear-description — Cancellare la descrizione.

È richiesta almeno un’opzione di modifica.

Esempi:

# Modifier l'utilisateur et la description
./blunderdb edit --db base.db --user "Marie" --description "Ma collection"

# Effacer la description
./blunderdb edit --db base.db --clear-description

6.12. verify — Verificare l’integrità

Verifica l’integrità del database e, facoltativamente, confronta un match con il suo file di origine.

./blunderdb verify --db <chemin> [--match <id>] [--mat <fichier.mat>]

Opzioni:

  • --db — Database (obbligatorio).

  • --match — ID del match da verificare.

  • --mat — File MAT da confrontare (usato con --match).

Senza l’opzione --match, il comando mostra le statistiche generali del database. Con --match, verifica i dati del match e può confrontarli con il file di origine originale.

Esempi:

# Vérification globale
./blunderdb verify --db base.db

# Vérifier un match spécifique
./blunderdb verify --db base.db --match 1

# Comparer avec le fichier source
./blunderdb verify --db base.db --match 1 --mat original.mat

6.13. delete — Eliminare dati

Elimina un match e tutti i dati associati (partite, mosse, analisi).

./blunderdb delete --db <chemin> --type match --id <id> [--confirm]

Opzioni:

  • --db — Database (obbligatorio).

  • --type — Tipo di eliminazione: match (obbligatorio).

  • --id — ID dell’elemento da eliminare (obbligatorio).

  • --confirm — Eliminare senza chiedere conferma.

Esempi:

# Supprimer avec confirmation interactive
./blunderdb delete --db base.db --type match --id 1

# Supprimer sans confirmation (pour scripts)
./blunderdb delete --db base.db --type match --id 1 --confirm

6.14. Esempi di flusso di lavoro

6.14.1. Import di una cartella di torneo

# Créer une base dédiée au tournoi
./blunderdb create --db tournoi_paris.db --user "Jean" --description "Open de Paris 2025"

# Importer tous les matchs du répertoire
./blunderdb import --db tournoi_paris.db --type batch --dir ./matchs_open_paris/

# Vérifier le résultat
./blunderdb list --db tournoi_paris.db --type stats

6.14.2. Backup periodico

# Export complet pour sauvegarde
./blunderdb export --db production.db --type database --file sauvegarde-$(date +%Y%m%d).db

6.14.3. Analisi degli errori

# Extraire les blunders dans une base séparée
./blunderdb search --db production.db --error-min 0.1 --export blunders.db

# Extraire les erreurs de videau
./blunderdb search --db production.db --decision cube --error-min 0.05 --export cube_errors.db

6.15. Codici di uscita

  • 0 — Successo.

  • 1 — Errore.

Questo permette di utilizzare la CLI in script con gestione degli errori:

if ./blunderdb import --db base.db --type match --file match.xg; then
    echo "Import réussi"
else
    echo "Échec de l'import"
    exit 1
fi