MASTRILOالدورة/الأداة التي سنبنيها
MASTRILO

الأداة التي سنبنيها

رأيت في الدروس السابقة لماذا ظهرت Go و كيف أثرت بعض الأفكار في تصميمها. سترى الآن أثر هذه الأفكار في أداة حقيقية ستبنيها خلال الدورة.

ستبني أداة سطر أوامر اسمها jobrunner. سترى في هذا الدرس شكلها النهائي قبل أن نبنيها خطوة خطوة في الفصول القادمة.

ما الذي تفعله الأداة؟

تقرأ أداة jobrunner ملف JSON يحتوي قائمة مهام. تتحقق من كل مهمة ثم تنفذ المهام واحدة بعد الأخرى و تعرض نتيجتها فور انتهاء تنفيذها.

تشغل الأداة بهذا الأمر:

bash
jobrunner --file jobs.json

كيف يبدو ملف المهام؟

لكل مهمة اسم و نوع و بيانات خاصة بها:

json
{
  "jobs": [
    {
      "name": "welcome email",
      "type": "email",
      "payload": {
        "to": "user@example.com",
        "subject": "Welcome",
        "body": "Thanks for signing up."
      }
    },
    {
      "name": "monthly stats",
      "type": "report",
      "payload": {
        "title": "March Report",
        "format": "pdf"
      }
    }
  ]
}

يقرأ البرنامج جميع المهام من القائمة نفسها ثم يستخدم الحقل type ليحدد طريقة معالجة كل مهمة.

عندما تنجح كل المهام

text
[OK] welcome email (email)
[OK] monthly stats (report)

تعرض الأداة نتيجة كل مهمة في سطر مستقل يذكر اسمها و نوعها. ثم تنتهي الأداة و تصبح الطرفية جاهزة لأمر جديد.

عندما تفشل مهمة

لا تتوقف الأداة عند أول مشكلة. إذا فشلت مهمة واحدة، تواصل تنفيذ البقية و تعرض اسم المهمة الفاشلة و سبب فشلها:

text
[OK] welcome email (email)
[FAILED] reset password (email): invalid email payload: to, subject, and body are required
[OK] monthly stats (report)

نفذت الأداة المهمة الأخيرة رغم فشل المهمة التي قبلها. ففشل مهمة لا يمنع تنفيذ المهام التي بعدها.

تفحص الأداة القائمة كاملة قبل التنفيذ. فإذا وجدت مهمة بلا اسم، تعرض الخطأ التالي و لا تبدأ تنفيذ أي مهمة:

text
load jobs: job 2: invalid job: missing job name

رمز الخروج (Exit Code)

تعيد الأداة عند انتهائها رمز خروج يصف نتيجة التنفيذ:

  • 0 حين تنجح كل المهام.
  • 1 حين تفشل مهمة أو أكثر أثناء التنفيذ.
  • 2 حين لا تحصل الأداة على قائمة مهام صالحة أصلا.

يقرأ المستخدم الرسائل النصية. أما البرامج التي تشغل الأداة، مثل سكربت أو نظام CI/CD فتقرأ رمز الخروج لتقرر هل تكمل أم تتوقف. بهذا يعرف المستخدم ما حدث. و تعرف البرامج الأخرى هل نجح التنفيذ.

لماذا تناسب Go هذه الأداة؟

تقرأ الأداة المدخلات و تتحقق منها ثم تنفذ المهام خطوة خطوة. و إذا فشلت مهمة تعرض سبب الفشل قبل أن تنتهي.

يظهر سطر [FAILED] عندما يعيد جزء من البرنامج خطأ و يتعامل معه جزء آخر. في Go نتعامل مع الخطأ على أنه قيمة. يستطيع الكود فحص هذه القيمة و تحديد ما يجب فعله بعدها. سنتعلم هذه الفكرة بالتفصيل أثناء بناء الأداة.

ستحصل في النهاية على jobrunner في ملف تنفيذي واحد يمكنك نسخه و تشغيله على جهاز آخر يعمل بالنظام نفسه من دون تثبيت بيئة تشغيل Go.

الخلاصة

تقرأ الأداة ملف المهام و تنفذ ما فيه واحدة بعد الأخرى ثم تعرض ما نجح و ما فشل و تنتهي برمز يصف النتيجة.

هذه هي الأداة التي سنبنيها. سنضيف إليها جزء جديد كلما تعلمنا فكرة جديدة في Go.

في الفصل التالي نبدأ بناء jobrunner. سنكتب أول برنامج Go و نطبع أول سطر منه.

اللوحات
نوع الخط
حجم الخط
أكملت 0 من 69 درس

Why Go Exists

4.الأداة التي سنبنيها

Learn Go by Building a CLI469 الأداة التي سنبنيهامكافأة إكمال الدرس إضافة إلى نقاط أنشطته. 10 XP. تُمنح المكافأة مرة واحدة فقط.