Exercism-এর সবকিছুর জন্য প্রামাণ্য স্পেসিফিকেশন
configlet হলো একটি টুল, যা track maintainers-দের তাদের track-এর রক্ষণাবেক্ষণে সাহায্য করে।
configlet-এর প্রধান কাজ হলো লিন্টিং করা: একটি track-এর (কনফিগারেশন) ফাইলগুলো সঠিকভাবে গঠিত কি না তা পরীক্ষা করা, তা সিনট্যাক্টিক ও সেমান্টিক উভয় দিক থেকেই। ভুলভাবে কনফিগার করা track সঠিকভাবে sync নাও হতে পারে, ওয়েবসাইটে ভুল দেখাতে পারে, বা ব্যবহারকারীর অভিজ্ঞতা খারাপ করতে পারে। তাই Exercism-এর অখণ্ডতা বজায় রাখতে configlet-এর গার্ডগুলো গুরুত্বপূর্ণ ভূমিকা পালন করে। linter যে নিয়মগুলো পরীক্ষা করে তার সম্পূর্ণ তালিকা এখানে পাওয়া যাবে।
configlet-এর দ্বিতীয় কাজ হলো ডকুমেন্ট তৈরি করা। configlet যে দুই ধরনের ডকুমেন্ট তৈরি করতে পারে:
introduction.md ফাইল.instructions.md ফাইল.এই ডকুমেন্টগুলো কীভাবে তৈরি হয় তা এখানে পাওয়া যাবে।
configlet-এর তৃতীয় কাজ হলো Practice Exercise-গুলোর জন্য বিভিন্ন ডেটা সরবরাহ করা।
একটি Exercism track-এর একটি Practice Exercise প্রায়ই exercism/problem-specifications repo-এর একটি specification থেকে বাস্তবায়ন করা হয়।
Exercism ইচ্ছাকৃতভাবে চায় যে প্রতিটি exercise-এর নির্দিষ্ট কিছু ফাইলের নিজস্ব কপি থাকুক (যেমন .docs/instructions.md), এমনকি যখন সেই exercise problem-specifications-এ বিদ্যমান থাকে।
তাই configlet-এ একটি sync কমান্ড আছে, যা পরীক্ষা করতে পারে যে track-এর এমন Practice Exercises upstream source-এর সাথে sync-এ আছে কি না, এবং আপডেট পাওয়া গেলে সেগুলো আপডেট করতে পারে।
problem-specifications থেকে তিন ধরনের ডেটা আপডেট করা যায়: ডকুমেন্টেশন, মেটাডেটা এবং tests।
এছাড়া track-স্তরের config.json ফাইল থেকে এক ধরনের ডেটা ভরা যায়: অনুশীলনীর config ফাইলের filepaths।
মনে রাখবেন, configlet-এর 4.0.0-alpha.34 এবং তার আগের রিলিজগুলোতে sync কমান্ড শুধু tests-এর উপর কাজ করত।
কোনো নির্দিষ্ট Practice Exercise-এর জন্য কোন tests বাস্তবায়িত হয়েছে তা হিসাব রাখতে, অনুশীলনীটিতে একটি .meta/tests.toml ফাইল থাকতেই হবে।
এই ফাইলের tests তাদের UUID দিয়ে চিহ্নিত করা হয় এবং প্রতিটি test-এর একটি বুলিয়ান মান থাকে, যা নির্দেশ করে সেটি ওই exercise-এ বাস্তবায়িত হয়েছে কি না।
একটি অনুশীলনীর বিভিন্ন অংশ কীভাবে sync করতে হয় তার বিস্তারিত এখানে পাওয়া যাবে।
Configlet দিয়ে একটি নতুন approach, article বা অনুশীলনীর জন্য দ্রুত ফাইল scaffold করা যায়।
এই ফাইলগুলো কীভাবে তৈরি করবেন সে সম্পর্কে আরও জানতে এখানে দেখুন।
অনুশীলনী, track এবং concept-গুলো একটি UUID দিয়ে চিহ্নিত করা হয়।
UUID কীভাবে তৈরি করবেন তা এখানে পাওয়া যাবে।
Configlet-এ একটি fmt কমান্ড আছে, যা track repo-র JSON ফাইলগুলোর সামঞ্জস্যপূর্ণ ফরম্যাটিং ঠিক রাখতে সাহায্য করে।
fmt কমান্ড নিচের ফাইলগুলো ফরম্যাট করে:
config.jsonexercises/{concept,practice}/*/.approaches/config.jsonexercises/{concept,practice}/*/.articles/config.jsonexercises/{concept,practice}/*/.meta/config.jsonformat কমান্ড সম্পর্কে আরও জানতে এখানে দেখুন।
configlet একটি স্বতন্ত্র বাইনারি হিসেবে বিতরণ করা হয়। প্রতিটি track-এ একটি bin/fetch-configlet স্ক্রিপ্ট থাকা উচিত, এবং একটি bin/fetch-configlet.ps1 স্ক্রিপ্টও থাকতে পারে। প্রথমটি একটি bash স্ক্রিপ্ট, এবং দ্বিতীয়টি একটি PowerShell স্ক্রিপ্ট।
এই স্ক্রিপ্টগুলোর একটি রান করলে configlet-এর সর্বশেষ সংস্করণ bin ডিরেক্টরিতে ডাউনলোড হয়। এরপর আপনি যথাক্রমে bin/configlet বা bin/configlet.exe রান করে configlet ব্যবহার করতে পারেন।
সব track-এর তাদের CI সেটআপে configlet lint কার্যকারিতা যুক্ত করা উচিত। এটি করার সবচেয়ে সহজ উপায় হলো configlet CI GitHub action ব্যবহার করা।