Les interfaces de ligne de commande (CLI) sont toujours populaires même face aux interfaces utilisateur graphiques (GUI) et à leurs composants visuels interactifs. Les CLI sont toujours utilisées en raison de leur simplicité, de leur facilité, de leur rapidité et du peu de ressources nécessaires pour configurer une application CLI.

La plupart des applications CLI s'exécutent sur le terminal ou la ligne de commande du système d'exploitation, ce qui augmente la flexibilité sans nécessiter autant de ressources que les interfaces graphiques.

Vous pouvez créer des CLI avec des langages populaires allant de Python à C++, Rust et Go. La plupart des langages fournissent des packages pour créer des applications CLI sans dépendances externes.

Go et applications en ligne de commande

L'un des cas d'utilisation prévus pour le langage de programmation Go est la création de CLI interactives performantes. Au fil des ans, Go a gagné du terrain sur le terrain.

Go alimente les applications CLI populaires telles que Docker CLI, Hugo, GitHub CLI, etc. Go est l'un des langages préférés pour créer des applications CLI, compte tenu de sa prise en charge de premier ordre et de ses performances.

Il y a un drapeau package pour l'analyse de ligne de commande, mais il manque beaucoup de fonctionnalités dont vous aurez besoin pour créer des applications de ligne de commande modernes. En outre, le développement d'applications CLI avec le drapeau package peut être complexe à mesure que la taille de votre application augmente et que vous intégrez davantage de fonctionnalités.

L'écosystème Go propose de nombreux packages réputés pour la création d'interfaces de ligne de commande, avec des fonctionnalités permettant de réduire votre temps de développement.

Le forfait Cobra

Cobra est l'un des packages les plus populaires pour créer des CLI dans l'écosystème Go et au-delà. Cobra est un package permettant de créer des applications CLI interactives et modernes dans n'importe quel environnement.

Cobra fournit une interface simple pour créer des CLI conformes aux normes de l'industrie, similaires aux outils Go et à Git. Cobra alimente de nombreuses applications CLI avec lesquelles vous avez interagi, notamment Docker, Kubernetes, Twitch, Hugo et bien d'autres.

Cobra est un outil facile à utiliser, basé sur des sous-commandes. Il prend en charge les indicateurs conformes à POSIX, les sous-commandes imbriquées et les indicateurs globaux, locaux et en cascade.

Cobra prend également en charge les suggestions intelligentes, la génération d'aide automatique, la reconnaissance des drapeaux et les alias de commande. Il permet l'auto-complétion du shell sur Bash, Powershell, Fish et Zsh, et l'intégration avec le vipère package pour les applications à 12 facteurs.

Exécutez cette commande dans le terminal de votre répertoire de travail pour installer la dernière version du package Cobra et ses dépendances.

aller obtenir -u github.com/spf13/cobra@latest

Cobra fournit une application CLI pour un développement plus rapide et plus facile. Le package Cobra—cli génère un code passe-partout que vous pouvez configurer pour ajouter de nouvelles commandes à votre application sans tracas.

Exécutez cette commande dans le terminal de votre répertoire de travail pour installer la dernière version du package Cobra-cli.

aller installez github.com/spf13/cobra-cli@latest

Vous devrez définir votre variable GOPATH sur votre répertoire de travail pour utiliser le générateur Cobra (Cobra-cli) et d'autres outils de ligne de commande Go.

Après une installation réussie, vous pouvez initialiser une application Cobra dans votre projet avec le initialiser commande.

init cobra-cli

Après avoir initialisé une application Cobra, vous pouvez utiliser le ajouter sous-commande avec la cobra-cli commande pour créer et ajouter une nouvelle commande à votre application Cobra.

cobra-cli ajouter une nouvelle commande

La commande crée un nouveau fichier avec le code dont vous avez besoin pour la commande. Vous pouvez modifier le fichier en fonction de votre opération.

Voici une fonction de gestionnaire de commande simple pour une commande générée avec la commande Cobra-cli.

importer (
"fmt"
"github.com/spf13/cobra"
"enregistrer"
"strconv"
)

// une commande générée par cobra

// newCmd représente la nouvelle commande
var newCmd = &cobra. Commande {
Utiliser: "newCmd",
Short: "La description newCmd que vous spécifiez",
Long: `Une description plus longue qui s'étend sur plusieurs lignes et contient probablement des exemples
et l'utilisation de votre commande. Par exemple:
Cobra est une bibliothèque CLI pour Go qui habilite les applications.
Cette application est un outil pour générer les fichiers nécessaires
pour créer rapidement une application Cobra.`,

Courir: fonction(cmd *cobra. Commande, arguments []chaîne) {
silen(arguments) < 1 {
enregistrer. Fatal("Aucun argument supplémentaire")
}
arguments := arguments[0]
fmt. Println (arguments)
}
}

fonctioninitialiser() {
rootCmd. AjouterCommande (newCmd)

// Ici, vous définirez vos drapeaux et paramètres de configuration.

// Cobra prend en charge les indicateurs persistants qui fonctionneront pour cette commande
// et toutes les sous-commandes, par exemple :
// nouvelleCmd. PersistentFlags().String("foo", "", "Une aide pour foo")

// Cobra prend en charge les drapeaux locaux qui ne s'exécuteront que lorsque cette commande
// est appelé directement, par exemple :
// nouvelleCmd. Flags().BoolP("toggle", "t", false, "Message d'aide pour basculer")
}

Vous pouvez accéder à des arguments supplémentaires avec le arguments argument de la fonction. La fonction ci-dessus utilise le si pour vérifier s'il existe un argument supplémentaire du terminal et imprime l'argument.

Le package CLI

Le forfait Cli est un package minimaliste sur le thème de l'expressivité pour créer des applications CLI rapides et distribuables dans Go.

Le package Cli prend en charge les arguments de ligne de commande, les indicateurs et les sous-commandes avec des catégories. Il a une fonctionnalité pour répondre aux options courtes, Complétions bash, l'aide générée et la gestion des versions.

Le package Cli est interopérable avec le module intégré de Go drapeau et contexte packages, et vous pouvez utiliser la plupart des fonctionnalités du drapeau forfait avec le Cli.

Exécutez ces commandes dans le terminal de votre répertoire de travail pour ajouter le package Graphql-go et ses dépendances à votre projet.

aller obtenir github.com/urfave/cli

Voici comment vous pouvez ajouter une commande à votre application CLI avec le package Cli.

emballer principal

importer (
"fmt"
"enregistrer"
"os"

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

fonctionprincipal() {
app := &cli. Application {
Nom: "nouveau",
Utilisation: "faire un nouveau commande avec le Cli emballer",
Action: fonction(*cli. Contexte)erreur {
fmt. Println("Voici un nouveau commande")
retournéant
},
}

si erreur := appli. Courir (os. Args); erreur != néant {
enregistrer. Fatal (erreur)
}
}

Dans le principal fonction, la application variable est une instance d'une application Cli et l'application Action Le champ est la fonction de gestionnaire de l'application. Ici le nouveau La commande imprimerait le texte de la fonction ou renverrait une erreur s'il y a des erreurs de l'application.

Le package Cli est utile pour les petits projets sans trop de complexité ou de fonctionnalités.

Le forfait Go-Arg

Le forfait Go-arg est un package basé sur des structures pour analyser les arguments CLI dans Go. Avec le package Go-arg, vous pouvez déclarer des structures pour les arguments CLI et opérer sur les arguments comme des structures de données Go régulières. Le package Go-arg fournit les arguments requis, les arguments de position, les variables d'environnement, les chaînes d'utilisation, les valeurs par défaut et de nombreuses autres fonctionnalités.

Le package prend en charge les types de base tels que entier, virgule flottante, chaîne et booléen. Il prend également en charge des types plus complexes tels que les URL, les durées, les adresses e-mail, Adresses MAC, des pointeurs, des tranches, des cartes et les n'importe quel taper.

Vous pouvez utiliser le obtenir commande pour ajouter le package Go-arg aux dépendances de votre package.

aller obtenir github.com/alexflint/aller-arg

Le package Go-arg est simple et intuitif à utiliser. Voici comment vous pouvez accepter les arguments de la ligne de commande et les imprimer sur la console de ligne de commande.

fonctionprincipal() {
var arguments structure {
Foo chaîne
Bar bourdonner
}
arg. MustParse(&args)
fmt. Println (arguments. Foo, arguments. Bar)
}

Le arguments struct est l'instance de struct pour l'application CLI. Le DoitParser La méthode analyse les arguments de la ligne de commande dans l'instance de struct.

Vous pouvez facilement exécuter le programme avec le courir commande et spécifiez les arguments après le nom du fichier.

aller exécuter principal.aller --foo=bonjour --bar

Vous pouvez également utiliser le construire pour créer votre application dans un exécutable avant d'exécuter l'exécutable et de spécifier les arguments.


aller construire principal.aller
./main --foo=bonjour --bar

Il existe des différences significatives entre les interfaces graphiques et les interfaces de ligne de commande que vous devrez prendre en compte

Au cours du développement, si vous devez choisir entre créer une CLI ou une GUI pour vos utilisateurs, vous devrez prendre en compte de nombreux facteurs pour faire votre choix.

L'utilisation d'interfaces de ligne de commande plutôt que d'interfaces graphiques se traduit par des programmes plus rapides, une automatisation facile et une utilisation moindre des ressources. Si l'un de ces avantages n'est pas crucial pour votre application, vous pourriez être mieux avec une interface graphique car ils sont plus populaires auprès des utilisateurs généraux.