Développement d'applications en ligne de commande
Création de commandes, arguments et flags avec Cobra
- Cobra est une bibliothèque Go (golang) qui facilite la création d'applications en ligne de commande (CLI).
- La création d'une commande Cobra nécessite la définition d'une structure
Command
. Par exemple :
import "github.com/spf13/cobra"
var maCommande = &cobra.Command{
Use: "maCommande",
Short: "Description courte de maCommande",
Long: `Description plus détaillée de maCommande`,
Run: func(cmd *cobra.Command, args []string) {
// Code à exécuter lorsque maCommande est appelée
},
}
- Les arguments passés à une commande sont disponibles dans la fonction
Run
à travers le paramètre args
.
- Cobra fournit également une interface pour définir des drapeaux (flags). Par exemple, pour ajouter un flag
verbose
à notre commande :
maCommande.Flags().BoolP("verbose", "v", false, "Augmente la verbosité de l'output")
Gestion des sous-commandes
- Cobra permet de structurer votre application en utilisant des sous-commandes. Chaque sous-commande peut avoir ses propres arguments et flags.
- Pour ajouter une sous-commande à une commande existante, utilisez la méthode
AddCommand
. Par exemple :
var sousCommande = &cobra.Command{ /*...*/ }
maCommande.AddCommand(sousCommande)
- Les sous-commandes peuvent avoir leurs propres sous-commandes, ce qui permet de créer une structure d'application en arborescence.
Utilisation de Cobra pour lire la configuration de l'application
- Cobra s'intègre facilement avec Viper, une autre bibliothèque Go qui gère la configuration des applications.
- Viper permet de lire la configuration à partir de diverses sources, comme des fichiers JSON, TOML, YAML, HCL, INI, des variables d'environnement, des arguments de ligne de commande, etc.
- Pour lier les flags d'une commande Cobra à une configuration Viper, utilisez la méthode
BindPFlag
. Par exemple :
import "github.com/spf13/viper"
maCommande.Flags().BoolP("verbose", "v", false, "Augmente la verbosité de l'output")
viper.BindPFlag("verbose", maCommande.Flags().Lookup("verbose"))
- Viper lira alors la configuration à partir du flag CLI si présent, sinon à partir des autres sources configurées.
- Cela permet une grande flexibilité dans la configuration de votre application, tout en fournissant une interface CLI cohérente grâce à Cobra.