Cobra का परिचय: यह क्या है और क्यों ज़रूरी है
Cobra, Go प्रोग्रामिंग भाषा के लिए एक शक्तिशाली लाइब्रेरी है, जिसे आधुनिक कमांड-लाइन इंटरफ़ेस (CLI) बनाने के लिए डिज़ाइन किया गया है। यह नेस्टेड कमांड, फ़्लैग, आर्गुमेंट्स और ऑटोमैटिक हेल्प जनरेशन के साथ जटिल एप्लिकेशन बनाने के लिए एक सरल और सहज API प्रदान करता है।
Cobra की आवश्यकता क्यों है? आधुनिक डेवलपमेंट में CLI टूल्स की अहम भूमिका है: DevOps उपयोगिताओं से लेकर डेवलपर के रोज़मर्रा के टूल्स तक। Cobra कई महत्वपूर्ण समस्याओं का समाधान करता है:
- कमांड संरचना: कमांड का पदानुक्रम बनाने की अनुमति देता है (जैसे,
app server start,app config set)। - ऑटोमैटिक हेल्प: आपके कमांड और फ़्लैग के आधार पर दस्तावेज़ीकरण तैयार करता है।
- लचीला आर्गुमेंट हैंडलिंग: पोज़िशनल आर्गुमेंट्स, अनिवार्य और वैकल्पिक फ़्लैग को सपोर्ट करता है।
- Viper के साथ एकीकरण: कॉन्फ़िगरेशन प्रबंधन के लिए Viper लाइब्रेरी के साथ आसानी से जुड़ता है।
- डेवलपमेंट स्पीड:
cobra-cliकोड जनरेटर की मदद से सेकंडों में एप्लिकेशन का ढाँचा तैयार किया जा सकता है।
Cobra का उपयोग Kubernetes, Hugo, Docker (आंशिक रूप से), GitHub CLI जैसे प्रसिद्ध प्रोजेक्ट्स में किया जाता है।
Cobra की स्थापना (इंस्टॉलेशन)
Go प्रोजेक्ट में Cobra स्थापित करना Go मॉड्यूल के मानक तरीके से किया जाता है। सुनिश्चित करें कि आपके पास Go का वर्शन 1.16 या उससे ऊपर है।
# मॉड्यूल इनिशियलाइज़ करें (यदि पहले से नहीं किया है)
go mod init mycli
# Cobra स्थापित करें
go get -u github.com/spf13/cobra@latest
# cobra-cli जनरेटर स्थापित करें (वैकल्पिक, लेकिन अनुशंसित)
go install github.com/spf13/cobra-cli@latest
स्थापना के बाद, आप अपने go.mod फ़ाइल में Cobra के वर्शन की जाँच कर सकते हैं। cobra-cli जनरेटर सही कॉन्फ़िगरेशन के साथ प्रोजेक्ट की बुनियादी संरचना तैयार करेगा।
Cobra के साथ त्वरित शुरुआत
चलिए एक सरल CLI एप्लिकेशन बनाते हैं जो अभिवादन प्रदर्शित करता है। पहले cobra-cli का उपयोग करके प्रोजेक्ट इनिशियलाइज़ करें:
cobra-cli init myapp
cd myapp
यह कमांड फ़ाइलों की संरचना बनाएगा: main.go, cmd/root.go। अब hello कमांड जोड़ें:
cobra-cli add hello
इसके बाद cmd/hello.go फ़ाइल को संपादित करें:
package cmd
import (
"fmt"
"github.com/spf13/cobra"
)
func init() {
rootCmd.AddCommand(helloCmd)
}
var helloCmd = &cobra.Command{
Use: "hello",
Short: "अभिवादन प्रदर्शित करता है",
Long: `hello कमांड उपयोगकर्ता को वैयक्तिकृत अभिवादन प्रदर्शित करता है।`,
Run: func(cmd *cobra.Command, args []string) {
name, _ := cmd.Flags().GetString("name")
if name == "" {
name = "World"
}
fmt.Printf("Hello, %s!\n", name)
},
}
func init() {
helloCmd.Flags().StringP("name", "n", "", "अभिवादन के लिए नाम")
}
अब एप्लिकेशन चलाएँ:
go run main.go hello --name "Alice"
# आउटपुट: Hello, Alice!
go run main.go hello
# आउटपुट: Hello, World!
Cobra के मुख्य तरीके और फ़ंक्शन
1. cobra.Command — कमांड बनाना
यह क्या करता है: CLI एप्लिकेशन में एक नया कमांड परिभाषित करता है। यह Cobra का मुख्य बिल्डिंग ब्लॉक है।
पैरामीटर:
Use— कमांड का नाम और उपयोग पैटर्न (जैसे, "hello [name]")Short— संक्षिप्त विवरण (कमांड सूची में दिखाई देता है)Long— विस्तृत विवरण (सहायता में दिखाई देता है)Run— कमांड कॉल करने पर निष्पादित होने वाला फ़ंक्शनArgs— आर्गुमेंट वैलिडेटर (जैसे, cobra.ExactArgs(2))
var versionCmd = &cobra.Command{
Use: "version",
Short: "एप्लिकेशन का वर्शन दिखाता है",
Long: `एप्लिकेशन का वर्तमान वर्शन और बिल्ड जानकारी प्रदर्शित करता है।`,
Run: func(cmd *cobra.Command, args []string) {
fmt.Println("myapp v1.0.0")
},
}