0Pricing
Go Academy · Aula

Subcomandos e grupos de comandos

Crie hierarquias de CLI com vários níveis

Subcomandos e grupos de comandos é uma aula grátis de Go Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Go Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Go Academy inclui 4 aulas no total.

Comandos hierárquicos

O Cobra oferece suporte a aninhamento arbitrário: raiz → subcomando → subsubcomando. Os usuários chamam app resource action, como em kubectl get pods.

Adicionando subcomandos

Crie cada subcomando como um cobra.Command separado e registre-o no comando pai:

var userCmd = &cobra.Command{Use: "user", Short: "Manage users"}
var userCreateCmd = &cobra.Command{Use: "create", Short: "Create user", RunE: createUser}
func init() {
    userCmd.AddCommand(userCreateCmd)
    rootCmd.AddCommand(userCmd)
}

Exibição por grupos (Cobra v1.6+)

Atribua comandos a grupos de exibição na saída da ajuda para melhorar a organização:

rootCmd.AddGroup(&cobra.Group{ID: "mgmt", Title: "Management Commands"})
userCmd.GroupID = "mgmt"

Aliases

Adicione aliases para que os usuários possam usar nomes curtos ou alternativos para os comandos:

var userCmd = &cobra.Command{
    Use:     "user",
    Aliases: []string{"users", "u"},
}

Comandos ocultos

Marque comandos de depuração ou internos como ocultos para que não apareçam na ajuda, mas continuem funcionando:

cmd.Hidden = true

Comandos obsoletos

Marque comandos antigos como obsoletos para exibir um aviso quando forem usados:

cmd.Deprecated = "use 'new-command' instead"

Ganchos anteriores e posteriores

Use PersistentPreRunE e PostRunE para a configuração e a finalização aplicadas a um comando e a todos os seus subcomandos (por exemplo, inicializar uma conexão com um banco de dados antes da execução de qualquer subcomando).

rootCmd.PersistentPreRunE = func(cmd *cobra.Command, args []string) error {
    return initDB()
}

Desativando a ajuda para comandos folha

O Cobra adiciona help como subcomando por padrão. Desative-o se sua aplicação tiver seu próprio comando de ajuda ou se a estrutura de subcomandos ficar confusa.

rootCmd.SetHelpCommand(&cobra.Command{Hidden: true})

Acessando o comando pai

Dentro de uma função Run, cmd.Parent() retorna o comando pai, o que é útil para acessar sinalizadores definidos no comando pai.

Percorrendo comandos

Use rootCmd.Commands() para iterar por todos os subcomandos registrados. Isso é útil para introspecção programática ou para gerar documentação automaticamente.

Geração de páginas de manual e Markdown

O Cobra pode gerar páginas de manual e documentação em Markdown para todos os comandos com o pacote cobra/doc:

doc.GenMarkdownTree(rootCmd, "./docs")

Verificação rápida

Como disponibilizar um subcomando do Cobra com vários nomes?

Recapitulação: subcomandos e grupos

Pontos principais:

  • AddCommand aninha comandos hierarquicamente
  • GroupID organiza a exibição da ajuda no Cobra v1.6+
  • Aliases para formas curtas; Hidden para comandos internos
  • PersistentPreRunE para configuração compartilhada entre subcomandos

Perguntas Frequentes

A aula “Subcomandos e grupos de comandos” é grátis?

Sim — o texto completo de “Subcomandos e grupos de comandos” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Go Academy, atualize para CoddyKit PRO. O curso de Go Academy inclui 4 aulas no total.

O que vou aprender em “Subcomandos e grupos de comandos”?

Crie hierarquias de CLI com vários níveis Você pratica Go Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Go Academy?

Nenhuma experiência prévia é necessária. Go Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Subcomandos e grupos de comandos”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Go Academy?

Sim. Cada aula de Go Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Fundamentos do Cobra
  2. Flags e flags persistentes
  3. Subcomandos e grupos de comandos
  4. Distribuindo ferramentas de CLI
← Voltar para Go Academy