Go (Golang) के लिए CLI फ्रेमवर्क: पूर्ण अवलोकन और तुलना

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Go (Golang) के लिए CLI फ्रेमवर्क: विस्तृत मार्गदर्शिका



Go (Golang) एक ऐसी भाषा है जो कमांड लाइन टूल (CLI) बनाने के लिए आदर्श है। तेज़ कंपाइलेशन, कंकरेंसी के लिए अंतर्निहित समर्थन और एकल बाइनरी फ़ाइल के रूप में सरल वितरण के कारण, Go CLI-एप्लिकेशन विकसित करने के लिए डी-फैक्टो मानक बन गया है। हालाँकि, जटिल, उपयोगकर्ता-अनुकूल और स्केलेबल कमांड लाइन इंटरफ़ेस बनाने के लिए, अकेली मानक लाइब्रेरी flag अक्सर पर्याप्त नहीं होती है। यहाँ विशेष फ्रेमवर्क काम आते हैं। इस लेख में, हम Go के तीन सबसे लोकप्रिय CLI फ्रेमवर्क: Cobra, urfave/cli और Kong पर विस्तार से चर्चा करेंगे, उनकी क्षमताओं की तुलना करेंगे और उपयोग के उदाहरण दिखाएंगे।



CLI फ्रेमवर्क का उपयोग क्यों करें?

शुरुआत से CLI-एप्लिकेशन विकसित करना जल्दी ही अव्यवस्थित हो सकता है, खासकर जब बात आती है:

  • नेस्टेड कमांड (subcommands) और फ़्लैग्स के समर्थन की।
  • स्वचालित सहायता पाठ (--help) के जनरेशन की।
  • एरर हैंडलिंग और आर्गुमेंट्स के वैलिडेशन की।
  • ऑटो-कम्पलीशन (bash/zsh completion) की।

फ्रेमवर्क तैयार आर्किटेक्चर और टूल्स का एक सेट प्रदान करके इन समस्याओं का समाधान करते हैं।



1. Cobra — Go में CLI का राजा

Cobra Go में CLI बनाने के लिए सबसे लोकप्रिय फ्रेमवर्क है। इसका उपयोग Kubernetes, Hugo, Docker और GitHub CLI जैसे दिग्गजों में किया जाता है। Cobra कमांड, आर्गुमेंट्स और फ़्लैग्स की अवधारणा पर बनाया गया है।



Cobra की प्रमुख विशेषताएं:

  • कमांड और उप-कमांड: प्रत्येक क्रिया एक कमांड है (app serve, app init)।
  • फ़्लैग्स: ग्लोबल (--verbose) और कमांड-विशिष्ट फ़्लैग्स।
  • स्वचालित सहायता: कमांड के विवरण से जनरेट होती है।
  • ऑटो-कम्पलीशन: bash, zsh, fish और PowerShell के लिए अंतर्निहित समर्थन।
  • कोड जनरेटर: cobra-cli उपयोगिता प्रोजेक्ट का ढाँचा बनाती है।


Cobra पर कोड उदाहरण:

package main

import ( "fmt" "github.com/spf13/cobra")

func main() { var rootCmd = &cobra.Command{ Use: "greet", Short: "Greet is a simple CLI tool", Long: "A simple CLI tool to greet people.", Run: func(cmd *cobra.Command, args []string) { fmt.Println("Hello! Use 'greet hello --name' to greet someone.") }, }

var name string var helloCmd = &cobra.Command{ Use: "hello", Short: "Greet a person", Run: func(cmd *cobra.Command, args []string) { fmt.Printf("Hello, %s!", name) }, }

helloCmd.Flags().StringVarP(&name, "name", "n", "World", "Name to greet") rootCmd.AddCommand(helloCmd) rootCmd.Execute()}

चलाना: go run main.go hello --name=PythonLib आउटपुट देगा Hello, PythonLib!।



2. urfave/cli — सरलता और न्यूनतावाद

पहले codegangsta/cli के नाम से जाना जाने वाला यह फ्रेमवर्क अपनी सरलता और सुरुचिपूर्ण API के लिए प्रसिद्ध है। यह छोटे और मध्यम आकार के प्रोजेक्ट्स के लिए एकदम सही है, जहाँ Cobra की पूरी शक्ति की आवश्यकता नहीं है।



urfave/cli की प्रमुख विशेषताएं:

  • घोषणात्मक शैली: एप्लिकेशन को डेटा संरचना के रूप में वर्णित किया जाता है।
  • स्वचालित सहायता जनरेशन: सुंदर और पढ़ने योग्य।
  • एक्शन का समर्थन: प्रत्येक कमांड का अपना हैंडलर फंक्शन होता है।
  • अंतर्निहित फ़्लैग प्रकार: स्ट्रिंग्स, संख्याएँ, बूलियन मान, अवधि और यहाँ तक कि फ़ाइलें भी।


urfave/cli पर कोड उदाहरण:

package main

import ( "fmt" "log" "os"

"github.com/urfave/cli/v2")

func main() { app := &cli.App{ Name: "calc", Usage: "A simple calculator", Comman

अनुशंसाएँ