Úvod do Cobry
Cobra představuje robustní framework pro tvorbu rozhraní příkazového řádku v jazyce Go. Nabízí soubor nástrojů a konvencí, které usnadňují vývoj příkazů, podřízených příkazů, parametrů a automatické generování dokumentace. V Go komunitě je Cobra považována za osvědčenou a široce používanou volbu pro budování konzolových aplikací.
Tento článek poskytuje komplexní návod k používání knihovny Cobra v jazyce Go. Projdeme si základní principy, funkce a doporučené postupy pro efektivní využití tohoto mocného nástroje.
Instalace knihovny Cobra
Prvním krokem je přidání knihovny Cobra do vašeho Go projektu. To lze provést pomocí příkazu go get
:
go get github.com/spf13/cobra
Po dokončení instalace můžete knihovnu Cobra importovat do vašeho Go kódu:
import "github.com/spf13/cobra"
Vytvoření základního příkazu
Začneme vytvořením jednoduchého příkazu, který vypíše textovou zprávu. Vytvořte nový Go soubor a vložte následující kód:
package main
import (
"fmt"
"github.com/spf13/cobra"
)
func main() {
cmd := &cobra.Command{
Use: "muj-prikaz",
Short: "Vypíše zprávu",
Run: func(cmd *cobra.Command, args []string) {
fmt.Println("Ahoj, Cobra!")
},
}
if err := cmd.Execute(); err != nil {
fmt.Println(err)
return
}
}
Rozbor kódu:
- Inicializujeme instanci struktury
cobra.Command
, která reprezentuje náš příkaz. - Atribut
Use
definuje název příkazu. - Atribut
Short
obsahuje krátký popis příkazu. - Atribut
Run
obsahuje funkci, která se spustí po zavolání příkazu. V tomto případě vypíšeme „Ahoj, Cobra!“. - Metoda
Execute
je volána pro spuštění příkazu.
Po spuštění tohoto programu v terminálu se zobrazí zpráva „Ahoj, Cobra!“.
Zavedení podřízených příkazů
Cobra umožňuje vytvářet podřízené příkazy, které rozšiřují funkcionalitu hlavního příkazu. Podřízený příkaz je příkaz, který je hierarchicky podřízen jinému příkazu. Zavedeme podřízený příkaz s názvem pozdrav
, který akceptuje jméno jako argument:
func main() {
rootCmd := &cobra.Command{
Use: "muj-prikaz",
Short: "Vypíše zprávu",
}
greetCmd := &cobra.Command{
Use: "pozdrav",
Short: "Vypíše pozdrav",
Run: func(cmd *cobra.Command, args []string) {
if len(args) == 0 {
fmt.Println("Ahoj, Cobra!")
} else {
fmt.Printf("Ahoj, %s!\n", args[0])
}
},
}
rootCmd.AddCommand(greetCmd)
if err := rootCmd.Execute(); err != nil {
fmt.Println(err)
return
}
}
Rozbor kódu:
- Nejprve vytvoříme hlavní (kořenový) příkaz
rootCmd
. - Poté vytvoříme podřízený příkaz
greetCmd
. - Podřízený příkaz
greetCmd
připojíme k hlavnímu příkazu pomocí metodyAddCommand
.
Nyní můžeme spustit příkaz s podřízeným příkazem pozdrav
a zadat jméno jako argument:
muj-prikaz pozdrav Jan
Tento příkaz vypíše zprávu „Ahoj, Jan!“.
Použití parametrů (flags)
Cobra umožňuje definovat parametry, které uživatelům umožňují přizpůsobit chování příkazu. Přidáme parametr --jmeno
do příkazu pozdrav
:
greetCmd := &cobra.Command{
Use: "pozdrav",
Short: "Vypíše pozdrav",
Run: func(cmd *cobra.Command, args []string) {
jmeno, _ := cmd.Flags().GetString("jmeno")
if len(args) == 0 {
fmt.Printf("Ahoj, %s!\n", jmeno)
} else {
fmt.Printf("Ahoj, %s!\n", args[0])
}
},
}
greetCmd.Flags().StringP("jmeno", "j", "", "Vaše jméno")
Rozbor kódu:
- Voláme metodu
Flags
nad příkazemgreetCmd
pro získání objektucobra.Command.Flags
. - Metodou
StringP
definujeme parametr--jmeno
. Atribut „jmeno“ definuje dlouhou verzi parametru, „j“ krátkou verzi, „“ výchozí hodnotu a „Vaše jméno“ popis. - Ve funkci
Run
příkazu získáváme hodnotu parametru--jmeno
pomocí metodyGetString
.
Generování dokumentace
Cobra nabízí možnost automatického generování dokumentace pro vaše příkazy a parametry. K vygenerování dokumentace použijte příkaz cobra-gen
:
cobra-gen doc
Tento příkaz vygeneruje dokumentaci ve formátu Markdown pro váš příkaz v souboru docs/muj-prikaz.md
.
Závěr
Knihovna Cobra je efektivní nástroj pro vytváření robustních a uživatelsky přívětivých rozhraní příkazového řádku v jazyce Go. V tomto článku jsme se seznámili se základními principy, funkcemi a doporučenými postupy používání Cobry. S její pomocí můžete vytvářet komplexní konzolové aplikace, které splňují specifické potřeby vašich uživatelů.
Pro další informace o knihovně Cobra doporučujeme prostudovat si její oficiální dokumentaci a prohlédnout si poskytnuté příklady.
Často kladené otázky
1. Co je to Cobra package?
Cobra je Go knihovna určená pro tvorbu rozhraní příkazového řádku.
2. Jak nainstaluji Cobra package?
Použitím příkazu go get github.com/spf13/cobra
.
3. Jak vytvořím základní příkaz pomocí Cobry?
Inicializací struktury cobra.Command
a definováním jejích atributů Use
, Short
a Run
.
4. Jak přidám podřízený příkaz?
Inicializací instance struktury cobra.Command
pro podřízený příkaz a jeho připojením k hlavnímu příkazu pomocí metody AddCommand
.
5. Jak přidám parametry k příkazu?
Voláním metody Flags
nad příkazem a následným použitím metod Bool
, Int
, String
a dalších.
6. Jak vygeneruji dokumentaci k příkazu?
Pomocí příkazu cobra-gen doc
.
7. Je Cobra kompatibilní s Go moduly?
Ano, Cobra plně podporuje Go moduly.
8. Jaké jsou doporučené postupy při používání Cobry?
- Používejte jednotné pojmenování příkazů a parametrů.
- Vytvářejte stručné a jasné popisy pro příkazy a parametry.
- Nastavujte výchozí hodnoty parametrů.
- Pro organizaci příkazů do logických celků využívejte podřízené příkazy.
- Generujte dokumentaci pro všechny vaše příkazy.