Frameworks CLI pour Go (Golang) : aperçu complet et comparaison

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

Frameworks CLI pour Go (Golang) : guide détaillé



Go (Golang) est un langage idéal pour créer des outils en ligne de commande (CLI). Grâce à sa compilation rapide, sa prise en charge intégrée de la concurrence et sa distribution simple sous forme d'un seul fichier binaire, Go est devenu le standard de facto pour le développement d'applications CLI. Cependant, pour créer des interfaces en ligne de commande complexes, pratiques et évolutives, la bibliothèque standard flag seule est souvent insuffisante. C'est là que des frameworks spécialisés viennent à la rescousse. Dans cet article, nous examinerons en détail les trois frameworks CLI les plus populaires pour Go : Cobra, urfave/cli et Kong, nous comparerons leurs fonctionnalités et montrerons des exemples d'utilisation.



Pourquoi utiliser un framework CLI ?

Développer une application CLI à partir de zéro peut rapidement devenir chaotique, surtout lorsqu'il s'agit de :

  • La prise en charge de commandes imbriquées (sous-commandes) et de drapeaux.
  • La génération automatique d'aide (--help).
  • La gestion des erreurs et la validation des arguments.
  • L'auto-complétion (bash/zsh completion).

Les frameworks résolvent ces problèmes en fournissant une architecture prête à l'emploi et un ensemble d'outils.



1. Cobra — le roi du CLI en Go

Cobra est le framework le plus populaire pour créer des CLI en Go. Il est utilisé par des géants comme Kubernetes, Hugo, Docker et GitHub CLI. Cobra est construit sur le concept de commandes, d'arguments et de drapeaux.



Fonctionnalités principales de Cobra :

  • Commandes et sous-commandes : Toute action est une commande (app serve, app init).
  • Drapeaux : Globaux (--verbose) et locaux à la commande.
  • Aide automatique : Générée à partir des descriptions des commandes.
  • Auto-complétion : Prise en charge intégrée pour bash, zsh, fish et PowerShell.
  • Générateur de code : L'utilitaire cobra-cli crée le squelette du projet.


Exemple de code avec Cobra :

package main

import ( "fmt" "github.com/spf13/cobra")

func main() { var rootCmd = &cobra.Command{ Use: "greet", Short: "Greet is a simple CLI tool", Long: "A simple CLI tool to greet people.", Run: func(cmd *cobra.Command, args []string) { fmt.Println("Hello! Use 'greet hello --name' to greet someone.") }, }

var name string var helloCmd = &cobra.Command{ Use: "hello", Short: "Greet a person", Run: func(cmd *cobra.Command, args []string) { fmt.Printf("Hello, %s!", name) }, }

helloCmd.Flags().StringVarP(&name, "name", "n", "World", "Name to greet") rootCmd.AddCommand(helloCmd) rootCmd.Execute()}

Exécution : go run main.go hello --name=PythonLib affichera Hello, PythonLib!.



2. urfave/cli — simplicité et minimalisme

Anciennement connu sous le nom de codegangsta/cli, ce framework est réputé pour sa simplicité et son API élégante. Il convient parfaitement aux projets de petite et moyenne envergure qui n'ont pas besoin de toute la puissance de Cobra.



Caractéristiques clés d'urfave/cli :

  • Style déclaratif : L'application est décrite comme une structure de données.
  • Génération automatique d'aide : Belle et lisible.
  • Prise en charge des actions : Chaque commande a sa propre fonction de gestion.
  • Types de drapeaux intégrés : Chaînes, nombres, booléens, durées et même fichiers.


Exemple de code avec urfave/cli :

package main

import ( "fmt" "log" "os"

"github.com/urfave/cli/v2")

func main() { app := &cli.App{ Name: "calc", Usage: "A simple calculator", Comman

Recommendations