0Pricing
Go Academy · درس

الأوامر الفرعية ومجموعات الأوامر

بناء تسلسلات هرمية متعددة المستويات لواجهات CLI

الأوامر الفرعية ومجموعات الأوامر درس مجاني في Go Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Go Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Go Academy 4 دروس في المجموع.

الأوامر الهرمية

تدعم Cobra التداخل بمستويات غير محدودة: الجذر ← الأمر الفرعي ← الأمر الفرعي الأدنى. يستدعي المستخدم app resource action مثل kubectl get pods.

إضافة أوامر فرعية

أنشئ كل أمر فرعي على هيئة cobra.Command منفصل، وسجّله لدى الأمر الأب:

var userCmd = &cobra.Command{Use: "user", Short: "Manage users"}
var userCreateCmd = &cobra.Command{Use: "create", Short: "Create user", RunE: createUser}
func init() {
    userCmd.AddCommand(userCreateCmd)
    rootCmd.AddCommand(userCmd)
}

تجميع العرض (Cobra v1.6+)

عيّن الأوامر إلى مجموعات عرض في مخرجات المساعدة لتحسين تنظيمها:

rootCmd.AddGroup(&cobra.Group{ID: "mgmt", Title: "Management Commands"})
userCmd.GroupID = "mgmt"

الأسماء المستعارة

أضف أسماء مستعارة حتى يتمكن المستخدمون من استعمال أسماء مختصرة أو بديلة للأوامر:

var userCmd = &cobra.Command{
    Use:     "user",
    Aliases: []string{"users", "u"},
}

الأوامر المخفية

حدّد أوامر التصحيح أو الأوامر الداخلية كمخفية حتى لا تظهر في المساعدة، مع بقائها قابلة للتنفيذ:

cmd.Hidden = true

الأوامر المهجورة

حدّد الأوامر القديمة كمُهَجَّرة لعرض تحذير عند استخدامها:

cmd.Deprecated = "use 'new-command' instead"

خطافات ما قبل التنفيذ وما بعده

استخدم PersistentPreRunE وPostRunE لإجراءات الإعداد والتنظيف التي تنطبق على أمر وجميع أوامره الفرعية، مثل تهيئة اتصال بقاعدة بيانات قبل تشغيل أي أمر فرعي.

rootCmd.PersistentPreRunE = func(cmd *cobra.Command, args []string) error {
    return initDB()
}

تعطيل المساعدة لأوامر المستوى الأخير

تضيف Cobra الأمر الفرعي help افتراضيًا. عطّله إذا كان لتطبيقك أمر مساعدة خاص به أو إذا كان هيكل الأوامر الفرعية قد يصبح مربكًا.

rootCmd.SetHelpCommand(&cobra.Command{Hidden: true})

الوصول إلى الأمر الأب

يعيد cmd.Parent() داخل دالة Run الأمر الأب، وهو مفيد للوصول إلى الخيارات المعرّفة في الأمر الأب.

استعراض الأوامر

استخدم rootCmd.Commands() للتكرار على جميع الأوامر الفرعية المسجّلة. ويفيد ذلك في الفحص البرمجي أو إنشاء الوثائق تلقائيًا.

إنشاء صفحات man وملفات Markdown

يمكن لـ Cobra إنشاء صفحات man ووثائق Markdown لجميع الأوامر باستخدام الحزمة cobra/doc:

doc.GenMarkdownTree(rootCmd, "./docs")

اختبار سريع

كيف تجعل أمرًا فرعيًا في Cobra متاحًا بأسماء متعددة؟

خلاصة: الأوامر الفرعية والمجموعات

النقاط الأساسية:

  • يؤدي AddCommand إلى تداخل الأوامر هرميًا
  • ينظّم GroupID عرض المساعدة في Cobra v1.6+
  • تُستخدم Aliases للأسماء المختصرة، وHidden للأوامر الداخلية
  • يُستخدم PersistentPreRunE لإجراءات الإعداد المشتركة بين الأوامر الفرعية

الأسئلة الشائعة

هل درس «الأوامر الفرعية ومجموعات الأوامر» مجاني؟

نعم — نص درس «الأوامر الفرعية ومجموعات الأوامر» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Go Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Go Academy 4 دروس في المجموع.

ماذا ستتعلم في «الأوامر الفرعية ومجموعات الأوامر»؟

بناء تسلسلات هرمية متعددة المستويات لواجهات CLI تتمرن على Go Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Go Academy؟

لا تُشترط خبرة سابقة. Go Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «الأوامر الفرعية ومجموعات الأوامر»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Go Academy هذا؟

نعم. كل درس في Go Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. أساسيات Cobra
  2. الخيارات والخيارات المستمرة
  3. الأوامر الفرعية ومجموعات الأوامر
  4. توزيع أدوات CLI
← العودة إلى Go Academy