مقدمة إلى Cobra: ما هي ولماذا تحتاجها
\nCobra هي مكتبة قوية للغة البرمجة 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
تُستخدم 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 بإنشاء هيكل مشروع أساسي بتكوين صحيح.
بداية سريعة مع Cobra
\nلنقم بإنشاء تطبيق CLI بسيط يعرض تحية. أولاً، نقوم بتهيئة المشروع باستخدام cobra-cli:
cobra-cli init myapp\ncd myapp\nسينشئ هذا الأمر هيكل الملفات: main.go، cmd/root.go. الآن، لنضف الأمر hello:
cobra-cli add hello\nبعد ذلك، سنقوم بتحرير الملف cmd/hello.go:
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الآن، قم بتشغيل التطبيق:
\ngo run main.go hello --name "Alice"\n# الإخراج: Hello, Alice!\n\ngo run main.go hello\n# الإخراج: Hello, World!\n\nالطرق والوظائف الأساسية لـ Cobra
\n\n1. cobra.Command — إنشاء أمر
\nما يفعله: يحدد أمرًا جديدًا في تطبيق CLI. هذه هي اللبنة الأساسية لـ Cobra.
\nالمعلمات:
\n- \n
Use— اسم الأمر ونمط الاستخدام (مثل "hello [name]") \n Short— وصف مختصر (يظهر في قائمة الأوامر) \n Long— وصف تفصيلي (يظهر في المساعدة) \n Run— الدالة التي يتم تنفيذها عند استدعاء الأمر \n Args— مدقق الوسائط (مثل cobra.ExactArgs(2)) \n
var versionCmd = &cobra.Command{\n