Développement d'applications en ligne de commande#
Présentation de Cobra et ses avantages#
- Cobra est une bibliothèque (library) Go dédiée à la création d'applications en ligne de commande (Command-Line Interface, CLI) robustes et flexibles.
- Il offre une interface simple pour créer des commandes puissantes, des sous-commandes, ainsi que des drapeaux (flags) pour ces commandes.
- Cobra est largement adopté dans l'écosystème Go, par des projets tels que Kubernetes, Hugo, et Docker, pour n'en nommer que quelques-uns.
- Il est remarquable pour ses fonctionnalités avancées, comme le support pour des suggestions de commandes, la génération automatique de documentation, et une bonne prise en charge de l'ancrage des commandes.
Installation et configuration de Cobra#
- Vous pouvez installer Cobra directement avec la commande Go :
go get github.com/spf13/cobra/cobra
- Ensuite, vous pouvez utiliser le générateur Cobra pour créer votre application CLI de base avec la commande :
cobra init --pkg-name <nom_de_votre_package>
- Ce qui vous donne une structure de base pour votre application CLI avec un main.go, un fichier de commandes root, et des dossiers pour les commandes et les drapeaux.
Structure de base d'une application CLI avec Cobra#
- Une application Cobra est constituée de commandes, de sous-commandes et de drapeaux associés.
- Chaque commande correspond à une action de votre application. Par exemple, dans une application de gestion de fichiers, vous pourriez avoir des commandes telles que
create
,read
,update
,delete
. - Les sous-commandes représentent des actions plus spécifiques. Par exemple, avec la commande
read
, vous pourriez avoir des sous-commandes commeread textfile
,read image
. - Les drapeaux vous permettent de personnaliser davantage ces actions. Par exemple, avec la commande
create textfile
, vous pourriez avoir un drapeau--uppercase
qui force le texte à être en majuscules. - Dans Cobra, chaque commande est représentée par une instance du struct
cobra.Command
. Les sous-commandes sont simplement des instances decobra.Command
attachées à leur commande parente avec la méthodeAddCommand()
. - Les drapeaux sont ajoutés à ces commandes avec les méthodes
PersistentFlags()
ouFlags()
. - Un exemple de code montrant la structure de base d'une application CLI avec Cobra serait :
package main
import (
"fmt"
"github.com/spf13/cobra"
)
func main() {
var cmdPrint = &cobra.Command{
Use: "print [string to print]",
Short: "Print anything to the screen",
Args: cobra.MinimumNArgs(1),
Run: func(cmd *cobra.Command, args []string) {
fmt.Println(args[0])
},
}
var rootCmd = &cobra.Command{Use: "myapp"}
rootCmd.AddCommand(cmdPrint)
rootCmd.Execute()
}
Cette application permet d'imprimer du texte sur la console avec la commande myapp print [texte]
.