Go (Golang) के लिए CLI फ्रेमवर्क: पेशेवर कंसोल एप्लिकेशन बनाना
Go (Golang) को कंसोल उपयोगिताएँ बनाने के लिए सबसे अच्छी भाषाओं में से एक माना जाता है। तेज़ कंपाइलेशन, बिल्ट-इन मल्टीथ्रेडिंग सपोर्ट और सुविधाजनक पैकेज सिस्टम के कारण, Docker, Kubernetes, Hugo और Terraform जैसे प्रसिद्ध टूल Go में लिखे गए हैं। हालाँकि, वास्तव में सुविधाजनक और लचीला CLI (कमांड लाइन इंटरफ़ेस) बनाने के लिए, अक्सर केवल मानक लाइब्रेरी flag ही नहीं, बल्कि विशेष फ्रेमवर्क की भी आवश्यकता होती है। इस लेख में, हम Go के लिए सर्वश्रेष्ठ CLI फ्रेमवर्क, उनकी क्षमताओं, लाभों और उपयोग के उदाहरणों पर विस्तार से चर्चा करेंगे।
CLI फ्रेमवर्क की आवश्यकता क्यों है?
मानक लाइब्रेरी flag सरल कार्यों के लिए बढ़िया काम करती है, लेकिन जब आपका प्रोजेक्ट बड़ा होता है, तो निम्नलिखित आवश्यकताएँ उत्पन्न होती हैं:
- नेस्टेड कमांड (subcommands) का समर्थन, जैसे
git commitयाdocker runमें। - स्वचालित सहायता और man-पेज जनरेशन।
- ऑटो-कम्प्लीशन (bash/zsh/fish completion)।
- जटिल फ्लैग और आर्गुमेंट्स का पार्सिंग।
- इंटरैक्टिव मोड (TUI) में काम करना।
इन्हीं कार्यों के लिए CLI फ्रेमवर्क मौजूद हैं।
1. Cobra — Go में CLI का राजा
Cobra Go पर CLI बनाने का सबसे लोकप्रिय फ्रेमवर्क है। इसका उपयोग Kubernetes, Hugo, GitHub CLI और कई अन्य प्रोजेक्ट्स में किया जाता है। Cobra कमांड, फ्लैग और आर्गुमेंट बनाने के लिए एक शक्तिशाली इंटरफ़ेस प्रदान करता है।
मुख्य विशेषताएँ:
- नेस्टेड कमांड का सरल निर्माण।
- स्वचालित सहायता और man-पेज जनरेशन।
- bash, zsh, fish और PowerShell के लिए ऑटो-कम्प्लीशन सपोर्ट।
- Viper (कॉन्फ़िगरेशन मैनेजर) के साथ एकीकरण।
cobra-cli initके माध्यम से प्रोजेक्ट स्कैफोल्डिंग।
Cobra पर कोड उदाहरण:
package main
import ( "fmt" "os"
"github.com/spf13/cobra")
func main() { var rootCmd = &cobra.Command{ Use: "greet", Short: "अभिवादन उपयोगिता", Long: "उपयोगकर्ता का अभिवादन करने के लिए सरल उपयोगिता", Run: func(cmd *cobra.Command, args []string) { name, _ := cmd.Flags().GetString("name") if name == "" { name = "दुनिया" } fmt.Printf("नमस्ते, %s!", name) }, }
rootCmd.Flags().StringP("name", "n", "", "उपयोगकर्ता का नाम")
if err := rootCmd.Execute(); err != nil { fmt.Println(err) os.Exit(1) }}इस प्रोग्राम को --name "राम" फ्लैग के साथ चलाने पर, आपको अभिवादन मिलेगा। Cobra स्वचालित रूप से --help फ्लैग और सुंदर आउटपुट फ़ॉर्मेटिंग जोड़ देगा।
2. urfave/cli (पहले codegangsta/cli)
urfave/cli दूसरा सबसे लोकप्रिय फ्रेमवर्क है। यह एक सरल और सहज API द्वारा प्रतिष्ठित है, जो कमांड के घोषणात्मक विवरण पर केंद्रित है। छोटे और मध्यम प्रोजेक्ट्स के लिए उपयुक्त।
लाभ:
- न्यूनतम और समझने योग्य कोड।
- फ्लैग, आर्गुमेंट और उप-कमांड के लिए बिल्ट-इन सपोर्ट।
- स्वचालित सहायता जनरेशन।
- कमांड निष्पादन से पहले/बाद में क्रियाओं का समर्थन (Before/After hooks)।
urfave/cli पर कोड उदाहरण:
package main
import ( "fmt" "log" "os"
"github.com/urfave/cli/v2")
func main() { app := &cli.App{ Name: "calculator", Usage: "सरल कैलकुलेटर", Commands: []*cli.Command{ { Name: "add", Aliases: []string{"a"}, Usage: "दो संख्याओं का जोड़",