As interfaces de linha de comando (CLIs) ainda são populares mesmo diante das interfaces gráficas de usuário (GUIs) e seus componentes visuais interativos. As CLIs ainda estão em uso devido à sua simplicidade, facilidade, velocidade e menos recursos necessários para configurar um aplicativo CLI.
A maioria dos aplicativos CLI é executada no terminal ou na linha de comando do sistema operacional, aumentando a flexibilidade sem exigir tantos recursos quanto GUIs.
Você pode criar CLIs com linguagens populares, de Python a C++, Rust e Go. A maioria dos idiomas fornece pacotes para criar aplicativos CLI sem dependências externas.
Go e aplicativos de linha de comando
Um dos casos de uso pretendidos para a linguagem de programação Go é a construção de CLIs interativas de alto desempenho. Ao longo dos anos, Go ganhou força no campo.
Go capacita aplicativos CLI populares como Docker CLI, Hugo, GitHub CLI e muito mais. Go é uma das linguagens preferidas para criar aplicativos CLI, devido ao seu suporte de primeira classe para eles, juntamente com seu desempenho.
Há um bandeira pacote para análise de linha de comando, mas carece de muitas funcionalidades necessárias para criar aplicativos modernos de linha de comando. Além disso, desenvolver aplicativos CLI com o bandeira O pacote pode ser complexo à medida que o tamanho do seu aplicativo aumenta e você incorpora mais recursos.
O ecossistema Go tem muitos pacotes respeitáveis para criar CLIs, com recursos para ajudar a reduzir o tempo de desenvolvimento.
O Pacote Cobra
cobra é um dos pacotes mais populares para criar CLIs no ecossistema Go e além. Cobra é um pacote para criar aplicativos CLI modernos e interativos em qualquer ambiente.
O Cobra fornece uma interface simples para criar CLIs de padrão industrial semelhante às ferramentas Go e Git. O Cobra alimenta muitos aplicativos CLI com os quais você interagiu, incluindo Docker, Kubernetes, Twitch, Hugo e muitos outros.
Cobra é uma ferramenta baseada em subcomando fácil de usar. Ele oferece suporte a sinalizadores compatíveis com POSIX, subcomandos aninhados e sinalizadores globais, locais e em cascata.
O Cobra também oferece suporte a sugestões inteligentes, geração automática de ajuda, reconhecimento de sinalizadores e aliases de comando. Ele permite preenchimento automático de shell em Bash, Powershell, Fish e Zsh e integração com o víbora pacote para aplicativos de 12 fatores.
Execute este comando no terminal do seu diretório de trabalho para instalar a versão mais recente do pacote Cobra e suas dependências.
ir get -u github.com/spf13/cobra@latest
O Cobra fornece um aplicativo CLI para um desenvolvimento mais rápido e fácil. O pacote Cobra—cli gera código clichê que você pode configurar para adicionar novos comandos ao seu aplicativo sem problemas.
Execute este comando no terminal do seu diretório de trabalho para instalar a versão mais recente do pacote Cobra-cli.
ir instale github.com/spf13/cobra-cli@latest
Você precisará definir sua variável GOPATH para seu diretório de trabalho para usar o gerador Cobra (Cobra-cli) e outras ferramentas de linha de comando Go.
Após uma instalação bem-sucedida, você pode inicializar um aplicativo Cobra em seu projeto com o iniciar comando.
cobra-cli init
Depois de inicializar um aplicativo Cobra, você pode usar o adicionar subcomando com o cobra-cli command para criar e adicionar um novo comando ao seu aplicativo Cobra.
cobra-cli adicionar novo comando
O comando cria um novo arquivo com o código necessário para o comando. Você pode editar o arquivo com base em sua operação.
Aqui está uma função de manipulador de comando simples para um comando gerado com o comando Cobra-cli.
importar (
"fmt"
"github.com/spf13/cobra"
"registro"
"strconv"
)// um comando gerado pela cobra
// newCmd representa o novo comando
var novoCmd = &cobra. Comando {
Use: "novoCmd",
Curto: "A descrição do newCmd que você especificar",
Longo: `Uma descrição mais longa que abrange várias linhas e provavelmente contém exemplos
e uso de usar seu comando. Por exemplo:
Cobra é uma biblioteca CLI para Go que capacita aplicativos.
Este aplicativo é uma ferramenta para gerar os arquivos necessários
para criar rapidamente um aplicativo Cobra.`,Correr: função(cmd *cobra. Comando, argumentos []corda) {
selen(arg) < 1 {
registro. Fatal("Sem argumentos adicionais")
}
argumentos := argumentos[0]
fmt. Println (argumentos)
}
}funçãoiniciar() {
rootCmd. AddCommand (newCmd)// Aqui você definirá seus sinalizadores e definições de configuração.
// Cobra suporta sinalizadores persistentes que funcionarão para este comando
// e todos os subcomandos, por exemplo:
// novoCmd. PersistentFlags().String("foo", "", "Uma ajuda para foo")
// Cobra suporta sinalizadores locais que só serão executados quando este comando
// é chamado diretamente, por exemplo:
// novoCmd. Flags().BoolP("toggle", "t", false, "Mensagem de ajuda para alternar")
}
Você pode acessar argumentos adicionais com o argumentos argumento da função. A função acima utiliza o se declaração para verificar se há um argumento adicional do terminal e imprime o argumento.
O pacote CLI
O pacote CLI é um pacote minimalista com tema de expressividade para criar aplicativos CLI rápidos e distribuíveis em Go.
O pacote CLI oferece suporte a argumentos de linha de comando, sinalizadores e subcomandos com categorias. Possui funcionalidade para atender opções curtas, Bash conclusões, ajuda gerada e controle de versão.
O pacote Cli é interoperável com o built-in Go bandeira e contexto pacotes, e você pode usar a maioria dos recursos no bandeira pacote com o CLI.
Execute esses comandos no terminal do seu diretório de trabalho para adicionar o pacote Graphql-go e suas dependências ao seu projeto.
ir obter github.com/urfave/cli
Veja como você pode adicionar um comando ao seu aplicativo CLI com o pacote CLI.
pacote principal
importar (
"fmt"
"registro"
"os""github.com/urfave/cli/v2"
)funçãoprincipal() {
app := &cli. Aplicativo {
Nome: "novo",
Uso: "fazer a novo comando com o CLI pacote",
Ação: função(*cli. Contexto)erro {
fmt. Println("Aqui está um novo comando")
retornarnada
},
}
se erro := app. Executar (os. Args); erro != nada {
registro. Fatal (err)
}
}
No principal função, o aplicativo a variável é uma instância de um aplicativo Cli e a variável do aplicativo Ação field é a função do manipulador do aplicativo. Aqui o novo O comando imprimiria o texto da função ou retornaria um erro se houvesse algum erro do aplicativo.
O pacote Cli é útil para projetos menores sem muita complexidade ou recursos.
O Pacote Go-Arg
O pacote Go-arg é um pacote baseado em struct para analisar argumentos CLI em Go. Com o pacote Go-arg, você pode declarar structs para argumentos CLI e operar os argumentos como estruturas de dados Go regulares. O pacote Go-arg fornece argumentos necessários, argumentos posicionais, variáveis de ambiente, strings de uso, valores padrão e muitos outros recursos.
O pacote suporta tipos básicos como integer, floating point, string e boolean. Ele também oferece suporte a tipos mais complexos, como URLs, durações de tempo, endereços de e-mail, endereços MAC, ponteiros, fatias, mapas e o qualquer tipo.
Você pode usar o pegar comando para adicionar o pacote Go-arg às dependências do seu pacote.
ir obtenha github.com/alexflint/ir-arg
O pacote Go-arg é simples e intuitivo de usar. Veja como você pode aceitar argumentos da linha de comando e imprimi-los no console da linha de comando.
funçãoprincipal() {
var argumentos estrutura {
Foo corda
Bar bool
}
arg. DeveParse(&args)
fmt. Imprimir (args. Foo, args. Bar)
}
O argumentos struct é a instância struct para o aplicativo CLI. O DeveParse O método analisa os argumentos da linha de comando na instância struct.
Você pode facilmente executar o programa com o correr comando e especifique os argumentos após o nome do arquivo.
ir executar principal.ir --foo=olá --bar
Você também pode usar o construir comando para criar seu aplicativo em um executável antes de executar o executável e especificar os argumentos.
ir construir principal.ir
./main --foo=olá --bar
Existem diferenças significativas entre GUIs e CLIs que você precisa considerar
Durante o desenvolvimento, se você tiver que escolher entre criar uma CLI ou GUI para seus usuários, precisará considerar muitos fatores para fazer uma escolha.
O uso de CLIs sobre GUIs resulta em programas mais rápidos, fácil automação e menor utilização de recursos. Se alguma dessas vantagens não for crucial para o seu aplicativo, talvez seja melhor usar uma GUI, pois ela é mais popular entre os usuários em geral.