Cobra للغة Go: دليل شامل مع أمثلة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة إلى Cobra: ما هي ولماذا تحتاجها

\n

Cobra هي مكتبة قوية للغة البرمجة Go، مصممة لإنشاء واجهات سطر الأوامر (CLI) الحديثة. توفر واجهة برمجة تطبيقات (API) بسيطة وبديهية لبناء تطبيقات معقدة مع دعم الأوامر المتداخلة، والعلامات (flags)، والوسائط (arguments)، والتوليد التلقائي للمساعدة.

\n

لماذا تحتاج Cobra؟ في التطوير الحديث، تلعب أدوات CLI دورًا رئيسيًا: من أدوات DevOps إلى أدوات المطور اليومية. تحل Cobra العديد من المهام الحرجة:

\n
    \n
  • تنظيم الأوامر: تتيح إنشاء تسلسل هرمي للأوامر (مثل app server start، app config set).
  • \n
  • المساعدة التلقائية: تولد توثيقًا بناءً على أوامرك وعلاماتك.
  • \n
  • معالجة مرنة للوسائط: تدعم الوسائط الموضعية، والعلامات الإلزامية والاختيارية.
  • \n
  • التكامل مع Viper: تتحد بسهولة مع مكتبة Viper لإدارة التكوين.
  • \n
  • سرعة التطوير: بفضل مولد الكود cobra-cli، يمكنك إنشاء هيكل التطبيق في ثوانٍ.
  • \n
\n

تُستخدم Cobra في مشاريع معروفة مثل Kubernetes، Hugo، Docker (جزئيًا)، GitHub CLI، والعديد من المشاريع الأخرى.

\n\n

تثبيت Cobra

\n

يتم تثبيت Cobra في مشروع Go بالطريقة القياسية عبر وحدات Go. تأكد من أن لديك Go الإصدار 1.16 أو أعلى.

\n
# تهيئة الوحدة (إذا لم يتم ذلك بعد)\ngo mod init mycli\n\n# تثبيت Cobra\ngo get -u github.com/spf13/cobra@latest\n\n# تثبيت مولد cobra-cli (اختياري ولكنه موصى به)\ngo install github.com/spf13/cobra-cli@latest
\n

بعد التثبيت، يمكنك التحقق من إصدار Cobra في ملف go.mod الخاص بك. سيقوم المولد cobra-cli بإنشاء هيكل مشروع أساسي بتكوين صحيح.

\n\n

بداية سريعة مع Cobra

\n

لنقم بإنشاء تطبيق CLI بسيط يعرض تحية. أولاً، نقوم بتهيئة المشروع باستخدام cobra-cli:

\n
cobra-cli init myapp\ncd myapp
\n

سينشئ هذا الأمر هيكل الملفات: main.go، cmd/root.go. الآن، لنضف الأمر hello:

\n
cobra-cli add hello
\n

بعد ذلك، سنقوم بتحرير الملف cmd/hello.go:

\n
package cmd\n\nimport (\n    "fmt"\n    "github.com/spf13/cobra"\n)\n\nfunc init() {\n    rootCmd.AddCommand(helloCmd)\n}\n\nvar helloCmd = &cobra.Command{\n    Use:   "hello",\n    Short: "يعرض تحية",\n    Long:  `الأمر hello يعرض تحية مخصصة للمستخدم.`,\n    Run: func(cmd *cobra.Command, args []string) {\n        name, _ := cmd.Flags().GetString("name")\n        if name == "" {\n            name = "World"\n        }\n        fmt.Printf("Hello, %s!\\n", name)\n    },\n}\n\nfunc init() {\n    helloCmd.Flags().StringP("name", "n", "", "الاسم للتحية")\n}
\n

الآن، قم بتشغيل التطبيق:

\n
go run main.go hello --name "Alice"\n# الإخراج: Hello, Alice!\n\ngo run main.go hello\n# الإخراج: Hello, World!
\n\n

الطرق والوظائف الأساسية لـ Cobra

\n\n

1. cobra.Command — إنشاء أمر

\n

ما يفعله: يحدد أمرًا جديدًا في تطبيق CLI. هذه هي اللبنة الأساسية لـ Cobra.

\n

المعلمات:

\n
    \n
  • Use — اسم الأمر ونمط الاستخدام (مثل "hello [name]")
  • \n
  • Short — وصف مختصر (يظهر في قائمة الأوامر)
  • \n
  • Long — وصف تفصيلي (يظهر في المساعدة)
  • \n
  • Run — الدالة التي يتم تنفيذها عند استدعاء الأمر
  • \n
  • Args — مدقق الوسائط (مثل cobra.ExactArgs(2))
  • \n
\n
var versionCmd = &cobra.Command{\n                    

توصيات