Configlet

Exercism पर हर चीज़ के लिए प्रामाणिक स्पेसिफिकेशन।


configlet एक टूल है जो ट्रैक मेंटेनरों की उनके ट्रैक के रखरखाव में मदद करता है।

लिंटिंग

configlet का मुख्य काम लिंटिंग करना है, यानी यह जाँचना कि ट्रैक की (कॉन्फिगरेशन) फाइलें ठीक से बनी हैं या नहीं, सिंटैक्स और अर्थ दोनों के हिसाब से। गलत कॉन्फिगर किए गए ट्रैक ठीक से सिंक नहीं हो पाते, वेबसाइट पर गलत दिख सकते हैं, या उपयोगकर्ता का अनुभव खराब कर सकते हैं। इसलिए Exercism को सही और भरोसेमंद बनाए रखने में configlet की ये जाँचें अहम भूमिका निभाती हैं। लिंटर जिन नियमों की जाँच करता है, उनकी पूरी सूची यहाँ देखी जा सकती है।

डॉक्युमेंट बनाना

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 फाइल से भी भरा जा सकता है: अभ्यास की कॉन्फिग फाइलों में मौजूद फाइल पाथ।

ध्यान दीजिए कि configlet के 4.0.0-alpha.34 और उससे पहले के रिलीज़ों में sync कमांड सिर्फ टेस्ट पर काम करती थी।

यह पता रखने के लिए कि किसी खास प्रैक्टिस अभ्यास में कौन-कौन से टेस्ट लागू किए गए हैं, उस अभ्यास में .meta/tests.toml फाइल का होना अनिवार्य है। इस फाइल के टेस्ट उनके UUID से पहचाने जाते हैं, और हर टेस्ट के साथ एक बूलियन वैल्यू होती है, जो बताती है कि वह उस अभ्यास में लागू किया गया है या नहीं।

किसी अभ्यास के अलग-अलग हिस्सों को कैसे सिंक करना है, इसकी जानकारी यहाँ मिलेगी।

फाइलें बनाइए

किसी नई अप्रोच, आर्टिकल या अभ्यास के लिए फाइलें जल्दी बनाने में configlet का इस्तेमाल किया जा सकता है।

ये फाइलें कैसे बनाएँ, इसके बारे में और जानने के लिए यहाँ देखिए।

UUID बनाना

हर अभ्यास, ट्रैक और कॉन्सेप्ट की पहचान एक UUID से होती है।

UUID बनाने का तरीका यहाँ दिया गया है।

फॉर्मेटिंग

ट्रैक रेपो की JSON फाइलों की फॉर्मेटिंग एक जैसी रखने में मदद के लिए configlet में एक fmt कमांड है। fmt कमांड इन फाइलों को फॉर्मेट करती है:

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

फॉर्मेट कमांड के बारे में और जानने के लिए यहाँ देखिए।

इंस्टॉलेशन

configlet एक स्टैंडअलोन बाइनरी के रूप में मिलता है। हर ट्रैक में bin/fetch-configlet स्क्रिप्ट होनी चाहिए, और bin/fetch-configlet.ps1 स्क्रिप्ट भी हो सकती है। पहली एक बैश स्क्रिप्ट है और दूसरी एक PowerShell स्क्रिप्ट।

इनमें से कोई भी स्क्रिप्ट चलाने पर configlet का नवीनतम वर्ज़न bin डायरेक्टरी में डाउनलोड हो जाता है। इसके बाद आप bin/configlet या bin/configlet.exe चलाकर configlet इस्तेमाल कर सकते हैं।

CI

सभी ट्रैक को अपने CI सेटअप में configlet की लिंटिंग सुविधा जोड़नी चाहिए। इसका सबसे आसान तरीका है configlet CI GitHub action का इस्तेमाल करना।