6. Διεπαφή γραμμής εντολών (CLI)
6.1. Εισαγωγή
Το blunderDB περιλαμβάνει μια πλήρη διεπαφή γραμμής εντολών (CLI) στο ίδιο εκτελέσιμο με τη γραφική διεπαφή. Η CLI είναι ιδιαίτερα χρήσιμη για:
τη μαζική εισαγωγή αγώνων: εισαγωγή ενός ολόκληρου καταλόγου αρχείων αγώνων (XG, SGF, MAT, BGF…) με μία μόνο εντολή,
την αυτοματοποίηση: ενσωμάτωση του blunderDB σε σενάρια κελύφους για τακτικά αντίγραφα ασφαλείας, προγραμματισμένες εξαγωγές ή αλυσίδες επεξεργασίας,
τη χρήση σε διακομιστή: διαχείριση βάσεων δεδομένων σε μηχανήματα χωρίς γραφικό περιβάλλον,
τη γρήγορη επιθεώρηση: έλεγχος του περιεχομένου ή της ακεραιότητας μιας βάσης δεδομένων χωρίς εκκίνηση της γραφικής διεπαφής.
Η CLI χρησιμοποιεί ακριβώς την ίδια μορφή βάσης δεδομένων με τη γραφική διεπαφή. Κάθε ενέργεια που εκτελείται μέσω της CLI είναι αμέσως ορατή στη γραφική διεπαφή και αντιστρόφως.
6.2. Γενική σύνταξη
Η λειτουργία ανιχνεύεται αυτόματα: αν το πρώτο όρισμα είναι μια εντολή CLI, το blunderDB εκκινεί σε λειτουργία χωρίς γραφικό περιβάλλον (headless), διαφορετικά εκκινεί τη γραφική διεπαφή.
# Mode graphique (aucun argument)
./blunderdb
# Mode CLI
./blunderdb <commande> [options]
6.3. Διαθέσιμες εντολές
Εντολή |
Περιγραφή |
|---|---|
create |
Δημιουργεί μια νέα βάση δεδομένων. |
import |
Εισάγει δεδομένα (αγώνας, θέση, παρτίδα). |
export |
Εξάγει δεδομένα. |
search |
Αναζητά θέσεις με φίλτρα. |
list |
Εμφανίζει το περιεχόμενο της βάσης. |
match |
Εμφανίζει τις θέσεις και τις αναλύσεις ενός αγώνα. |
info |
Εμφανίζει τα μεταδεδομένα της βάσης. |
edit |
Τροποποιεί τα μεταδεδομένα της βάσης. |
verify |
Ελέγχει την ακεραιότητα της βάσης. |
delete |
Διαγράφει δεδομένα. |
help |
Εμφανίζει τη βοήθεια. |
version |
Εμφανίζει την έκδοση. |
Κάθε εντολή δέχεται την επιλογή --help για την εμφάνιση της λεπτομερούς βοήθειάς της.
6.4. create — Δημιουργία βάσης δεδομένων
Δημιουργεί ένα νέο αρχείο βάσης δεδομένων με προαιρετικά μεταδεδομένα.
./blunderdb create --db <chemin> [--user <nom>] [--description <texte>] [--force]
Επιλογές:
--db— Διαδρομή του αρχείου βάσης δεδομένων προς δημιουργία (υποχρεωτικό).--user— Όνομα του κατόχου της βάσης.--description— Περιγραφή της βάσης.--force— Αντικατάσταση του αρχείου αν υπάρχει ήδη.
Η επέκταση .db προστίθεται αυτόματα αν λείπει. Οι γονικοί κατάλογοι δημιουργούνται όταν χρειάζεται.
Παράδειγμα:
./blunderdb create --db mes_matchs.db --user "Jean" --description "Matchs de tournoi 2025"
6.5. import — Εισαγωγή δεδομένων
Εισάγει αρχεία αγώνων ή θέσεων στη βάση δεδομένων.
./blunderdb import --db <chemin> --type <type> [options]
Επιλογές:
--db— Διαδρομή της βάσης δεδομένων (υποχρεωτικό).--type— Τύπος εισαγωγής:match,positionήbatch(υποχρεωτικό).--file— Αρχείο προς εισαγωγή (γιαmatchκαιposition).--dir— Κατάλογος προς εισαγωγή (γιαbatch).--recursive— Αναδρομική σάρωση των υποκαταλόγων (προεπιλογή: ναι).
6.5.1. Εισαγωγή αγώνα
Υποστηριζόμενες μορφές: eXtreme Gammon (.xg, .xgp), GNUbg (.sgf), Jellyfish (.mat, .txt) και BGBlitz (.bgf).
./blunderdb import --db base.db --type match --file match.xg
6.5.2. Εισαγωγή θέσεων
Εισάγει θέσεις από ένα αρχείο κειμένου (μία θέση JSON ανά γραμμή):
./blunderdb import --db base.db --type position --file positions.txt
6.5.3. Μαζική εισαγωγή
Εισάγει όλα τα αρχεία αγώνων ενός καταλόγου σε μία μόνο ενέργεια. Είναι η πιο αποδοτική μέθοδος για την εισαγωγή μεγάλου αριθμού αγώνων.
# 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
Ένας συνοπτικός πίνακας δείχνει για κάθε αρχείο αν η εισαγωγή πέτυχε (✓), απέτυχε (✗) ή επρόκειτο για διπλότυπο (⊘).
6.6. export — Εξαγωγή δεδομένων
Εξάγει το περιεχόμενο της βάσης σε αρχεία.
./blunderdb export --db <chemin> --type <type> --file <sortie> [options]
Επιλογές:
--db— Βάση προέλευσης (υποχρεωτικό).--type— Τύπος εξαγωγής:database,positionsήmatches(υποχρεωτικό).--file— Αρχείο εξόδου (υποχρεωτικό).--analysis— Συμπερίληψη των αναλύσεων (προεπιλογή: ναι).--comments— Συμπερίληψη των σχολίων (προεπιλογή: ναι).--filters— Συμπερίληψη της βιβλιοθήκης φίλτρων (προεπιλογή: ναι).--played-moves— Συμπερίληψη των παιγμένων κινήσεων (προεπιλογή: ναι).--matches— Συμπερίληψη των αγώνων (προεπιλογή: ναι).--collections— Συμπερίληψη των συλλογών (προεπιλογή: όχι).--collection-ids— IDs συλλογών προς εξαγωγή (χωρισμένα με κόμματα).--match-ids— IDs αγώνων προς εξαγωγή (χωρισμένα με κόμματα, κενό = όλα).--tournament-ids— IDs τουρνουά προς εξαγωγή (χωρισμένα με κόμματα).
Παραδείγματα:
# 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 — Αναζήτηση θέσεων
Αναζητά θέσεις στη βάση σύμφωνα με συνδυάσιμα κριτήρια.
./blunderdb search --db <chemin> [options]
Κύριες επιλογές:
--db— Βάση δεδομένων (υποχρεωτικό).--format— Μορφή εξόδου:table,jsonήxgid(προεπιλογή:table).--limit— Μέγιστος αριθμός αποτελεσμάτων (0 = απεριόριστα).--export— Εξαγωγή των αποτελεσμάτων σε μια νέα βάση.
Διαθέσιμα φίλτρα:
--decision— Τύπος απόφασης:checkerήcube.--dice— Ζαριά. Το5,3αναζητά τις θέσεις όπου ταιριάζουν και τα δύο ζάρια (ανεξαρτήτως σειράς). Το5αναζητά τις θέσεις όπου ένα 5 εμφανίζεται σε ένα από τα δύο ζάρια (η τιμή του δεύτερου ζαριού αγνοείται). Συνεπάγεται--decision checkerαν δεν δοθεί καμία τιμή για το--decision.--pip-min/--pip-max— Εύρος διαφοράς του μετρητή πόντων (pip count).--winrate-min/--winrate-max— Εύρος ποσοστού νίκης (%).--cube— Τιμή του κύβου.--score1/--score2— Σκορ των παικτών.--match-length— Μήκος του αγώνα.--error-min— Ελάχιστο σφάλμα equity.--move-error-min/--move-error-max— Σφάλμα της παιγμένης κίνησης (millipoints).--has-analysis— Μόνο οι θέσεις με ανάλυση.--off1-min/--off2-min— Ελάχιστος αριθμός πουλιών εκτός (παίκτης 1/2).--match-ids— Φιλτράρισμα κατά IDs αγώνων (χωρισμένα με κόμματα).--tournament-ids— Φιλτράρισμα κατά IDs τουρνουά (χωρισμένα με κόμματα).
Παραδείγματα:
# 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 — Εμφάνιση περιεχομένου
Εμφανίζει το περιεχόμενο της βάσης δεδομένων.
./blunderdb list --db <chemin> --type <type> [--limit <n>]
Τύποι:
matches— Λίστα των εισαγμένων αγώνων.positions— Λίστα των θέσεων (περιορισμένη στις 10 από προεπιλογή).stats— Συνολικά στατιστικά (θέσεις, αναλύσεις, αγώνες, παρτίδες, κινήσεις).
Παραδείγματα:
# 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 — Εμφάνιση αγώνα
Εμφανίζει τις θέσεις και τις αναλύσεις ενός εισαγμένου αγώνα.
./blunderdb match --db <chemin> --id <id_match> [--format <format>] [--output <fichier>]
Επιλογές:
--db— Βάση δεδομένων (υποχρεωτικό).--id— ID του αγώνα προς εμφάνιση (υποχρεωτικό).--format— Μορφή εξόδου:json,textήsummary(προεπιλογή:json).--output— Αρχείο εξόδου (προεπιλογή: τυπική έξοδος).
Παραδείγματα:
# 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 — Μεταδεδομένα της βάσης
Εμφανίζει τα μεταδεδομένα και τα στατιστικά μιας βάσης δεδομένων.
./blunderdb info --db <chemin> [--format <format>]
Επιλογές:
--db— Βάση δεδομένων (υποχρεωτικό).--format— Μορφή εξόδου:textήjson(προεπιλογή:text).
Παραδείγματα:
# Afficher les informations
./blunderdb info --db base.db
# Sortie JSON (pour un script)
./blunderdb info --db base.db --format json
6.11. edit — Τροποποίηση μεταδεδομένων
Τροποποιεί το όνομα χρήστη ή την περιγραφή μιας βάσης δεδομένων.
./blunderdb edit --db <chemin> [options]
Επιλογές:
--db— Βάση δεδομένων (υποχρεωτικό).--user— Νέο όνομα χρήστη.--description— Νέα περιγραφή.--clear-user— Διαγραφή του ονόματος χρήστη.--clear-description— Διαγραφή της περιγραφής.
Απαιτείται τουλάχιστον μία επιλογή τροποποίησης.
Παραδείγματα:
# 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 — Έλεγχος ακεραιότητας
Ελέγχει την ακεραιότητα της βάσης δεδομένων και, προαιρετικά, συγκρίνει έναν αγώνα με το αρχείο προέλευσής του.
./blunderdb verify --db <chemin> [--match <id>] [--mat <fichier.mat>]
Επιλογές:
--db— Βάση δεδομένων (υποχρεωτικό).--match— ID του αγώνα προς έλεγχο.--mat— Αρχείο MAT προς σύγκριση (χρησιμοποιείται με--match).
Χωρίς την επιλογή --match, η εντολή εμφανίζει τα γενικά στατιστικά της βάσης. Με το --match, ελέγχει τα δεδομένα του αγώνα και μπορεί να τα συγκρίνει με το αρχικό αρχείο προέλευσης.
Παραδείγματα:
# 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 — Διαγραφή δεδομένων
Διαγράφει έναν αγώνα και όλα τα σχετικά δεδομένα (παρτίδες, κινήσεις, αναλύσεις).
./blunderdb delete --db <chemin> --type match --id <id> [--confirm]
Επιλογές:
--db— Βάση δεδομένων (υποχρεωτικό).--type— Τύπος διαγραφής:match(υποχρεωτικό).--id— ID του στοιχείου προς διαγραφή (υποχρεωτικό).--confirm— Διαγραφή χωρίς αίτημα επιβεβαίωσης.
Παραδείγματα:
# 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. Παραδείγματα ροών εργασίας
6.14.1. Εισαγωγή ενός καταλόγου τουρνουά
# 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. Τακτικό αντίγραφο ασφαλείας
# Export complet pour sauvegarde
./blunderdb export --db production.db --type database --file sauvegarde-$(date +%Y%m%d).db
6.14.3. Ανάλυση σφαλμάτων
# 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. Κωδικοί εξόδου
0— Επιτυχία.1— Σφάλμα.
Αυτό επιτρέπει τη χρήση της CLI σε σενάρια με διαχείριση σφαλμάτων:
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