6. Interfaz de línea de comandos (CLI)
6.1. Introducción
blunderDB incluye una interfaz de línea de comandos (CLI) completa en el mismo ejecutable que la interfaz gráfica. La CLI resulta especialmente útil para:
la importación masiva de partidas: importar un directorio entero de archivos de partidas (XG, SGF, MAT, BGF…) con un solo comando,
la automatización: integrar blunderDB en scripts de shell para copias de seguridad periódicas, exportaciones programadas o cadenas de procesamiento,
el uso en servidor: manipular bases de datos en máquinas sin entorno gráfico,
la inspección rápida: comprobar el contenido o la integridad de una base de datos sin abrir la interfaz gráfica.
La CLI utiliza exactamente el mismo formato de base de datos que la interfaz gráfica. Cualquier operación realizada desde la CLI es inmediatamente visible en la interfaz gráfica y viceversa.
6.2. Sintaxis general
El modo se detecta automáticamente: si el primer argumento es un comando de la CLI, blunderDB se ejecuta en modo headless; de lo contrario, abre la interfaz gráfica.
# Mode graphique (aucun argument)
./blunderdb
# Mode CLI
./blunderdb <commande> [options]
6.3. Comandos disponibles
Comando |
Descripción |
|---|---|
create |
Crea una nueva base de datos. |
import |
Importa datos (partida, posición, lote). |
export |
Exporta datos. |
search |
Busca posiciones con filtros. |
list |
Muestra el contenido de la base de datos. |
match |
Muestra las posiciones y los análisis de una partida. |
info |
Muestra los metadatos de la base de datos. |
edit |
Modifica los metadatos de la base de datos. |
verify |
Verifica la integridad de la base de datos. |
delete |
Elimina datos. |
help |
Muestra la ayuda. |
version |
Muestra la versión. |
Cada comando acepta la opción --help para mostrar su ayuda detallada.
6.4. create — Crear una base de datos
Crea un nuevo archivo de base de datos con metadatos opcionales.
./blunderdb create --db <chemin> [--user <nom>] [--description <texte>] [--force]
Opciones:
--db— Ruta del archivo de base de datos a crear (obligatorio).--user— Nombre del propietario de la base de datos.--description— Descripción de la base de datos.--force— Sobrescribir el archivo si ya existe.
La extensión .db se añade automáticamente si falta. Los directorios superiores se crean si es necesario.
Ejemplo:
./blunderdb create --db mes_matchs.db --user "Jean" --description "Matchs de tournoi 2025"
6.5. import — Importar datos
Importa archivos de partidas o de posiciones en la base de datos.
./blunderdb import --db <chemin> --type <type> [options]
Opciones:
--db— Ruta de la base de datos (obligatorio).--type— Tipo de importación:match,positionobatch(obligatorio).--file— Archivo a importar (paramatchyposition).--dir— Directorio a importar (parabatch).--recursive— Explorar recursivamente los subdirectorios (por defecto: sí).
6.5.1. Importar una partida
Formatos compatibles: eXtreme Gammon (.xg, .xgp), GNUbg (.sgf), Jellyfish (.mat, .txt) y BGBlitz (.bgf).
./blunderdb import --db base.db --type match --file match.xg
6.5.2. Importar posiciones
Importa posiciones desde un archivo de texto (una posición JSON por línea):
./blunderdb import --db base.db --type position --file positions.txt
6.5.3. Importación por lotes
Importa todos los archivos de partidas de un directorio en una sola operación. Es el método más eficiente para importar un gran número de partidas.
# 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 tabla resumen indica para cada archivo si la importación tuvo éxito (✓), falló (✗) o se trata de un duplicado (⊘).
6.6. export — Exportar datos
Exporta el contenido de la base de datos a archivos.
./blunderdb export --db <chemin> --type <type> --file <sortie> [options]
Opciones:
--db— Base de datos de origen (obligatorio).--type— Tipo de exportación:database,positionsomatches(obligatorio).--file— Archivo de salida (obligatorio).--analysis— Incluir los análisis (por defecto: sí).--comments— Incluir los comentarios (por defecto: sí).--filters— Incluir la biblioteca de filtros (por defecto: sí).--played-moves— Incluir las jugadas realizadas (por defecto: sí).--matches— Incluir las partidas (por defecto: sí).--collections— Incluir las colecciones (por defecto: no).--collection-ids— IDs de las colecciones a exportar (separados por comas).--match-ids— IDs de las partidas a exportar (separados por comas, vacío = todas).--tournament-ids— IDs de los torneos a exportar (separados por comas).
Ejemplos:
# 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 — Buscar posiciones
Busca posiciones en la base de datos según criterios combinables.
./blunderdb search --db <chemin> [options]
Opciones principales:
--db— Base de datos (obligatorio).--format— Formato de salida:table,jsonoxgid(por defecto:table).--limit— Número máximo de resultados (0 = ilimitado).--export— Exportar los resultados a una nueva base de datos.
Filtros disponibles:
--decision— Tipo de decisión:checkerocube.--dice— Tirada de dados.5,3busca las posiciones en las que coinciden ambos dados (sin importar el orden).5busca las posiciones en las que aparece un 5 en cualquiera de los dos dados (se ignora el valor del segundo dado). Implica--decision checkersi no se especifica ningún valor de--decision.--pip-min/--pip-max— Intervalo de diferencia de pip count.--winrate-min/--winrate-max— Intervalo de porcentaje de victoria (%).--cube— Valor del cubo.--score1/--score2— Marcadores de los jugadores.--match-length— Duración del match.--error-min— Error de equidad mínimo.--move-error-min/--move-error-max— Error de la jugada realizada (milipuntos).--has-analysis— Solo las posiciones con análisis.--off1-min/--off2-min— Fichas retiradas mínimas (jugador 1/2).--match-ids— Filtrar por IDs de partidas (separados por comas).--tournament-ids— Filtrar por IDs de torneos (separados por comas).
Ejemplos:
# 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 — Listar el contenido
Muestra el contenido de la base de datos.
./blunderdb list --db <chemin> --type <type> [--limit <n>]
Tipos:
matches— Lista de las partidas importadas.positions— Lista de posiciones (limitada a 10 por defecto).stats— Estadísticas globales (posiciones, análisis, partidas, juegos, jugadas).
Ejemplos:
# 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 — Mostrar una partida
Muestra las posiciones y los análisis de una partida importada.
./blunderdb match --db <chemin> --id <id_match> [--format <format>] [--output <fichier>]
Opciones:
--db— Base de datos (obligatorio).--id— ID de la partida a mostrar (obligatorio).--format— Formato de salida:json,textosummary(por defecto:json).--output— Archivo de salida (por defecto: salida estándar).
Ejemplos:
# 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 — Metadatos de la base de datos
Muestra los metadatos y las estadísticas de una base de datos.
./blunderdb info --db <chemin> [--format <format>]
Opciones:
--db— Base de datos (obligatorio).--format— Formato de salida:textojson(por defecto:text).
Ejemplos:
# Afficher les informations
./blunderdb info --db base.db
# Sortie JSON (pour un script)
./blunderdb info --db base.db --format json
6.11. edit — Modificar los metadatos
Modifica el nombre de usuario o la descripción de una base de datos.
./blunderdb edit --db <chemin> [options]
Opciones:
--db— Base de datos (obligatorio).--user— Nuevo nombre de usuario.--description— Nueva descripción.--clear-user— Borrar el nombre de usuario.--clear-description— Borrar la descripción.
Se requiere al menos una opción de modificación.
Ejemplos:
# 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 — Verificar la integridad
Verifica la integridad de la base de datos y, opcionalmente, compara una partida con su archivo de origen.
./blunderdb verify --db <chemin> [--match <id>] [--mat <fichier.mat>]
Opciones:
--db— Base de datos (obligatorio).--match— ID de la partida a verificar.--mat— Archivo MAT a comparar (se usa con--match).
Sin la opción --match, el comando muestra las estadísticas generales de la base de datos. Con --match, verifica los datos de la partida y puede compararlos con el archivo de origen original.
Ejemplos:
# 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 — Eliminar datos
Elimina una partida y todos los datos asociados (juegos, jugadas, análisis).
./blunderdb delete --db <chemin> --type match --id <id> [--confirm]
Opciones:
--db— Base de datos (obligatorio).--type— Tipo de eliminación:match(obligatorio).--id— ID del elemento a eliminar (obligatorio).--confirm— Eliminar sin pedir confirmación.
Ejemplos:
# 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. Ejemplos de flujos de trabajo
6.14.1. Importar un directorio de 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. Copia de seguridad periódica
# Export complet pour sauvegarde
./blunderdb export --db production.db --type database --file sauvegarde-$(date +%Y%m%d).db
6.14.3. Análisis de errores
# 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. Códigos de salida
0— Éxito.1— Error.
Esto permite usar la CLI en scripts con gestión de errores:
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