Configlet

Οι κανονικές προδιαγραφές για τα πάντα στο Exercism


Το configlet είναι ένα εργαλείο που βοηθά τους συντηρητές μιας διαδρομής στη συντήρηση της διαδρομής τους.

Έλεγχος

Η κύρια λειτουργία του configlet είναι ο έλεγχος: να ελέγχει αν τα αρχεία (ρυθμίσεων) μιας διαδρομής είναι σωστά δομημένα, τόσο συντακτικά όσο και σημασιολογικά. Οι λανθασμένα ρυθμισμένες διαδρομές μπορεί να μην συγχρονίζονται σωστά, να φαίνονται λάθος στον ιστότοπο ή να προσφέρουν υποδεέστερη εμπειρία στον χρήστη, γι' αυτό οι έλεγχοι του configlet παίζουν σημαντικό ρόλο στη διατήρηση της ακεραιότητας του Exercism. Τον πλήρη κατάλογο των κανόνων που ελέγχει ο ελεγκτής μπορείς να τον βρεις εδώ.

Δημιουργία εγγράφων

Η δευτερεύουσα λειτουργία του configlet είναι να δημιουργεί έγγραφα. Υπάρχουν δύο τύποι εγγράφων που μπορεί να δημιουργήσει το configlet:

  1. Το αρχείο introduction.md μιας Άσκησης Έννοιας.
  2. Το αρχείο instructions.md μιας Άσκησης Πρακτικής.

Το πώς δημιουργούνται αυτά τα έγγραφα μπορείς να το βρεις εδώ.

Συγχρονισμός δεδομένων άσκησης με το αποθετήριο problem-specifications

Η τριτεύουσα λειτουργία του configlet είναι να παρέχει διάφορα δεδομένα για ασκήσεις πρακτικής.

Μια Άσκηση Πρακτικής σε μια διαδρομή του Exercism συχνά υλοποιείται από μια προδιαγραφή στο αποθετήριο exercism/problem-specifications.

Το Exercism απαιτεί σκόπιμα κάθε άσκηση να έχει το δικό της αντίγραφο ορισμένων αρχείων (όπως το .docs/instructions.md), ακόμη και όταν αυτή η άσκηση υπάρχει στο problem-specifications. Γι' αυτό το configlet έχει μια εντολή sync, η οποία μπορεί να ελέγξει αν τέτοιες Ασκήσεις Πρακτικής σε μια διαδρομή είναι συγχρονισμένες με αυτή την πηγή και να τις ενημερώσει όταν υπάρχουν διαθέσιμες ενημερώσεις.

Υπάρχουν τρία είδη δεδομένων που μπορούν να ενημερωθούν από το problem-specifications: τεκμηρίωση, μεταδεδομένα και τεστ. Υπάρχει επίσης ένα είδος δεδομένων που μπορεί να συμπληρωθεί από το αρχείο config.json της διαδρομής: οι διαδρομές αρχείων στα αρχεία ρυθμίσεων των ασκήσεων.

Σημείωσε ότι στις εκδόσεις 4.0.0-alpha.34 και παλαιότερες του configlet, η εντολή sync λειτουργούσε μόνο στα τεστ.

Για να παρακολουθείς ποια τεστ υλοποιούνται για μια συγκεκριμένη άσκηση πρακτικής, η άσκηση πρέπει να περιέχει ένα αρχείο .meta/tests.toml. Τα τεστ σε αυτό το αρχείο αναγνωρίζονται από το UUID τους και κάθε τεστ έχει μια τιμή Boolean (λογική τιμή) που δείχνει αν υλοποιείται από αυτή την άσκηση.

Μπορείς να βρεις λεπτομέρειες για το πώς να συγχρονίσεις τα διάφορα μέρη μιας άσκησης εδώ.

Δημιουργία αρχείων

Το configlet μπορεί να χρησιμοποιηθεί για να δημιουργήσεις γρήγορα τα αρχεία για μια νέα προσέγγιση, ένα νέο άρθρο ή μια νέα άσκηση.

Μπορείς να μάθεις περισσότερα για το πώς να δημιουργείς αυτά τα αρχεία εδώ.

Δημιουργία UUID

Οι ασκήσεις, οι διαδρομές και οι έννοιες αναγνωρίζονται από ένα UUID.

Το πώς να δημιουργείς UUID μπορείς να το βρεις εδώ.

Μορφοποίηση

Το configlet έχει μια εντολή fmt που βοηθά στη συνεπή μορφοποίηση των αρχείων JSON στο αποθετήριο της διαδρομής. Η εντολή fmt μορφοποιεί τα εξής αρχεία:

  • config.json
  • exercises/{concept,practice}/*/.approaches/config.json
  • exercises/{concept,practice}/*/.articles/config.json
  • exercises/{concept,practice}/*/.meta/config.json

Μπορείς να μάθεις περισσότερα για την εντολή format εδώ.

Εγκατάσταση

Το configlet διανέμεται ως αυτόνομο εκτελέσιμο αρχείο. Κάθε διαδρομή θα πρέπει να έχει ένα σενάριο bin/fetch-configlet και μπορεί να έχει και ένα σενάριο bin/fetch-configlet.ps1. Το πρώτο είναι ένα σενάριο bash και το δεύτερο ένα σενάριο PowerShell.

Η εκτέλεση ενός από αυτά τα σενάρια κατεβάζει την τελευταία έκδοση του configlet στον κατάλογο bin. Στη συνέχεια μπορείς να χρησιμοποιήσεις το configlet εκτελώντας bin/configlet ή bin/configlet.exe αντίστοιχα.

CI

Όλες οι διαδρομές θα πρέπει να ενσωματώνουν τη λειτουργικότητα ελέγχου του configlet στη ρύθμιση CI τους. Ο ευκολότερος τρόπος να το κάνεις αυτό είναι να χρησιμοποιήσεις το configlet CI GitHub action.