Cobra pour Go : guide complet avec exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction à Cobra : qu'est-ce que c'est et pourquoi l'utiliser

\n

Cobra est une bibliothèque puissante pour le langage de programmation Go, conçue pour créer des interfaces en ligne de commande (CLI) modernes. Elle fournit une API simple et intuitive pour construire des applications complexes avec prise en charge des commandes imbriquées, des drapeaux, des arguments et de la génération automatique d'aide.

\n

Pourquoi utiliser Cobra ? Dans le développement moderne, les outils CLI jouent un rôle clé : des utilitaires DevOps aux outils quotidiens des développeurs. Cobra résout plusieurs problèmes critiques :

\n
    \n
  • Structuration des commandes : permet de créer une hiérarchie de commandes (par exemple, app server start, app config set).
  • \n
  • Aide automatique : génère une documentation basée sur vos commandes et drapeaux.
  • \n
  • Traitement flexible des arguments : prend en charge les arguments positionnels, les drapeaux obligatoires et optionnels.
  • \n
  • Intégration avec Viper : se combine facilement avec la bibliothèque Viper pour la gestion de la configuration.
  • \n
  • Rapidité de développement : grâce au générateur de code cobra-cli, vous pouvez créer une structure d'application en quelques secondes.
  • \n
\n

Cobra est utilisé dans des projets célèbres tels que Kubernetes, Hugo, Docker (partiellement), GitHub CLI et bien d'autres.

\n\n

Installation de Cobra

\n

L'installation de Cobra dans un projet Go s'effectue de manière standard via les modules Go. Assurez-vous d'avoir Go version 1.16 ou supérieure.

\n
# Initialisation du module (si ce n'est pas déjà fait)\ngo mod init mycli\n\n# Installation de Cobra\ngo get -u github.com/spf13/cobra@latest\n\n# Installation du générateur cobra-cli (optionnel mais recommandé)\ngo install github.com/spf13/cobra-cli@latest
\n

Après l'installation, vous pouvez vérifier la version de Cobra dans votre fichier go.mod. Le générateur cobra-cli créera une structure de projet de base avec une configuration correcte.

\n\n

Démarrage rapide avec Cobra

\n

Créons une application CLI simple qui affiche un message de bienvenue. Commençons par initialiser le projet avec cobra-cli :

\n
cobra-cli init myapp\ncd myapp
\n

Cette commande créera la structure de fichiers : main.go, cmd/root.go. Ajoutons maintenant la commande hello :

\n
cobra-cli add hello
\n

Ensuite, modifions le fichier cmd/hello.go :

\n
package cmd\n\nimport (\n    "fmt"\n    "github.com/spf13/cobra"\n)\n\nfunc init() {\n    rootCmd.AddCommand(helloCmd)\n}\n\nvar helloCmd = &cobra.Command{\n    Use:   "hello",\n    Short: "Affiche un message de bienvenue",\n    Long:  `La commande hello affiche un message de bienvenue personnalisé à l'utilisateur.`,\n    Run: func(cmd *cobra.Command, args []string) {\n        name, _ := cmd.Flags().GetString("name")\n        if name == "" {\n            name = "World"\n        }\n        fmt.Printf("Hello, %s!\\n", name)\n    },\n}\n\nfunc init() {\n    helloCmd.Flags().StringP("name", "n", "", "Nom pour le message de bienvenue")\n}
\n

Exécutez maintenant l'application :

\n
go run main.go hello --name "Alice"\n# Sortie : Hello, Alice!\n\ngo run main.go hello\n# Sortie : Hello, World!
\n\n

Méthodes et fonctions principales de Cobra

\n\n

1. cobra.Command — création d'une commande

\n

Ce qu'elle fait : Définit une nouvelle commande dans l'application CLI. C'est le bloc de construction principal de Cobra.

\n

Paramètres :

\n
    \n
  • Use — nom de la commande et modèle d'utilisation (par exemple, "hello [name]")
  • \n
  • Short — description courte (affichée dans la liste des commandes)
  • \n
  • Long — description détaillée (affichée dans l'aide)
  • \n
  • Run — fonction exécutée lors de l'appel de la commande
  • \n
  • Args — validateur d'arguments (par exemple, cobra.ExactArgs(2))
  • \n
\n
var versionCmd = &cobra.Command{\n                    

Recommendations