يحتوي مستودع المسار في Exercism على العديد من ملفات JSON، منها:
config.json الخاص بالمسار..meta/config.json وlinks.json..meta/config.json.تصبح هذه الملفات أسهل قراءة إذا كان تنسيقها موحّدًا في Exercism كلها، ولذلك يوفّر configlet أمر fmt لإعادة كتابة ملفات JSON في المسار بصيغة قياسية.
يُنسّق أمر fmt الملفات التالية:
config.jsonexercises/{concept,practice}/*/.approaches/config.jsonexercises/{concept,practice}/*/.articles/config.jsonexercises/{concept,practice}/*/.meta/config.jsonيُنسّق أمر fmt ملفات 'meta/config.json' الخاصة بالتمارين.
configlet [global-options] fmt [command-options]
Global options:
-h, --help Show this help message and exit
--version Show this tool's version information and exit
-t, --track-dir <dir> Specify a track directory to use instead of the current directory
-v, --verbosity <verbosity> The verbosity of output. Allowed values: q[uiet], n[ormal], d[etailed]
Options for fmt:
-e, --exercise <slug> Only operate on this exercise
-u, --update Prompt to write formatted files
-y, --yes Auto-confirm the prompt from --update
لا يُجري configlet fmt وحده أي تغييرات على المسار، بل يتحقق من تنسيق ملف .meta/config.json لكل تمرين مفاهيم وتمرين ممارسة، ومن ملف config.json الخاص بالمسار.
لطباعة قائمة بالمسارات التي لا يوجد لها بعد ملف .meta/config.json مُنسّق للتمرين (مع الخروج برمز خروج غير صفري إذا كان تمرين واحد على الأقل يفتقر إلى ملف إعدادات مُنسّق):
configlet fmt
لتظهر لك مطالبة بكتابة ملفات الإعدادات المُنسّقة، أضف الخيار --update (أو -u اختصارًا):
configlet fmt --update
لكتابة ملفات الإعدادات المُنسّقة دون تفاعل، أضف الخيار --yes (أو -y اختصارًا):
configlet fmt --update --yes
للعمل على تمرين واحد، استخدم الخيار --exercise (أو -e اختصارًا).
على سبيل المثال، لكتابة ملف الإعدادات المُنسّق للتمرين prime-factors دون تفاعل:
configlet fmt -uy -e prime-factors
عند كتابة ملفات JSON، يقوم configlet fmt بما يلي:
يكتب أزواج المفتاح/القيمة بالترتيب القياسي.
يستخدم مسافتين للمسافة البادئة.
يضع كل عنصر في مصفوفة JSON وكل مفتاح في كائن JSON في سطر منفصل.
يحذف أزواج المفتاح/القيمة للمفاتيح الاختيارية التي قيمها فارغة.
على سبيل المثال، يُحذف "source": "".
يحذف "test_runner": true من ملفات إعدادات تمارين الممارسة.
هذا المفتاح اختياري، وتقول المواصفة إن غياب المفتاح test_runner يعني القيمة true.
عندما يحتوي كائن JSON على أكثر من زوج مفتاح/قيمة بالاسم نفسه، يُبقى على الأخير فقط.
الترتيب القياسي للمفاتيح في ملف .meta/config.json الخاص بالتمرين هو:
- authors
- [contributors]
- files
- solution
- test
- exemplar (Concept Exercises only)
- example (Practice Exercises only)
- [editor]
- [invalidator]
- [language_versions]
- [forked_from] (Concept Exercises only)
- [icon] (Concept Exercises only)
- [test_runner] (Practice Exercises only)
- blurb
- [source]
- [source_url]
- [custom]
حيث تشير الأقواس المربعة إلى أن المفتاح الواقع بينها اختياري.
لاحظ أن configlet fmt لا يعمل إلا على التمارين الموجودة في ملف config.json على مستوى المسار.
لذلك، إذا كنت تنفّذ تمرينًا جديدًا في مسار وتريد تنسيق ملف .meta/config.json الخاص به، فأضف التمرين إلى ملف config.json على مستوى المسار أولًا.
وإذا لم يكن التمرين جاهزًا بعد ليراه المستخدمون، فاضبط قيمة status فيه على wip.
يكون رمز الخروج 0 عندما تكون كل ملفات الإعدادات التي رآها configlet مُنسّقة عند خروجه، و1 بخلاف ذلك.