Frameworks CLI pour Go (Golang) : aperçu complet des outils pour créer des applications console

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) : créons des applications console professionnelles



Go (Golang) est à juste titre considéré comme l'un des meilleurs langages pour créer des utilitaires console. Grâce à sa compilation rapide, sa prise en charge intégrée du multithreading et son système de packages pratique, des outils légendaires comme Docker, Kubernetes, Hugo et Terraform ont été écrits en Go. Cependant, pour créer une CLI (Command Line Interface) vraiment pratique et flexible, il est souvent nécessaire non seulement d'utiliser la bibliothèque standard flag, mais aussi des frameworks spécialisés. Dans cet article, nous allons détailler les meilleurs frameworks CLI pour Go, leurs fonctionnalités, leurs avantages et des exemples d'utilisation.



Pourquoi un framework CLI est-il nécessaire ?



La bibliothèque standard flag gère très bien les tâches simples, mais lorsque votre projet s'agrandit, des besoins apparaissent :

  • Prise en charge des commandes imbriquées (subcommands), comme dans git commit ou docker run.
  • Génération automatique de l'aide et des pages man.
  • Auto-complétion (bash/zsh/fish completion).
  • Analyse d'indicateurs et d'arguments complexes.
  • Mode de fonctionnement interactif (TUI).

C'est précisément pour ces tâches que les frameworks CLI existent.



1. Cobra — le roi des CLI en Go



Cobra est le framework le plus populaire pour créer des CLI en Go. Il est utilisé dans Kubernetes, Hugo, GitHub CLI et de nombreux autres projets. Cobra fournit une interface puissante pour créer des commandes, des indicateurs et des arguments.



Fonctionnalités clés :

  • Création simple de commandes imbriquées.
  • Génération automatique de l'aide et des pages man.
  • Prise en charge de l'auto-complétion pour bash, zsh, fish et PowerShell.
  • Intégration avec Viper (gestionnaire de configuration).
  • Génération de la structure du projet via cobra-cli init.


Exemple de code avec Cobra :

package main

import ( "fmt" "os"

"github.com/spf13/cobra")

func main() { var rootCmd = &cobra.Command{ Use: "greet", Short: "Utilitaire de salutation", Long: "Un utilitaire simple pour saluer l'utilisateur", Run: func(cmd *cobra.Command, args []string) { name, _ := cmd.Flags().GetString("name") if name == "" { name = "monde" } fmt.Printf("Bonjour, %s!", name) }, }

rootCmd.Flags().StringP("name", "n", "", "Nom de l'utilisateur")

if err := rootCmd.Execute(); err != nil { fmt.Println(err) os.Exit(1) }}


En exécutant ce programme avec l'indicateur --name "Vassia", vous obtiendrez un message de salutation. Cobra ajoutera automatiquement l'indicateur --help et un formatage de sortie soigné.



2. urfave/cli (anciennement codegangsta/cli)



urfave/cli est le deuxième framework le plus populaire. Il se distingue par une API simple et intuitive, orientée vers la description déclarative des commandes. Il convient parfaitement aux projets de petite et moyenne envergure.



Avantages :

  • Code minimaliste et compréhensible.
  • Prise en charge intégrée des indicateurs, arguments et sous-commandes.
  • Génération automatique de l'aide.
  • Prise en charge des actions avant et après l'exécution de la commande (hooks Before/After).


Exemple de code avec urfave/cli :

package main

import ( "fmt" "log" "os"

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

func main() { app := &cli.App{ Name: "calculator", Usage: "Calculatrice simple", Commands: []*cli.Command{ { Name: "add", Aliases: []string{"a"}, Usage: "Addition de deux nombres",

Recommendations