Cobra para Go: guía completa con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción a Cobra: qué es y para qué sirve

\n

Cobra es una potente biblioteca para el lenguaje de programación Go, diseñada para crear interfaces de línea de comandos (CLI) modernas. Proporciona una API simple e intuitiva para construir aplicaciones complejas con soporte para comandos anidados, banderas, argumentos y generación automática de ayuda.

\n

¿Para qué sirve Cobra? En el desarrollo moderno, las herramientas CLI juegan un papel clave: desde utilidades de DevOps hasta herramientas cotidianas del desarrollador. Cobra resuelve varias tareas críticas:

\n
    \n
  • Estructuración de comandos: permite crear jerarquías de comandos (por ejemplo, app server start, app config set).
  • \n
  • Ayuda automática: genera documentación basada en sus comandos y banderas.
  • \n
  • Manejo flexible de argumentos: soporta argumentos posicionales, banderas obligatorias y opcionales.
  • \n
  • Integración con Viper: se combina fácilmente con la biblioteca Viper para la gestión de configuración.
  • \n
  • Velocidad de desarrollo: gracias al generador de código cobra-cli, se puede crear un esqueleto de aplicación en segundos.
  • \n
\n

Cobra se utiliza en proyectos tan conocidos como Kubernetes, Hugo, Docker (parcialmente), GitHub CLI y muchos otros.

\n\n

Instalación de Cobra

\n

La instalación de Cobra en un proyecto Go se realiza de forma estándar a través de los módulos de Go. Asegúrese de tener instalado Go versión 1.16 o superior.

\n
# Inicialización del módulo (si aún no se ha hecho)\ngo mod init mycli\n\n# Instalación de Cobra\ngo get -u github.com/spf13/cobra@latest\n\n# Instalación del generador cobra-cli (opcional, pero recomendado)\ngo install github.com/spf13/cobra-cli@latest
\n

Después de la instalación, puede verificar la versión de Cobra en su archivo go.mod. El generador cobra-cli creará una estructura básica del proyecto con la configuración correcta.

\n\n

Inicio rápido con Cobra

\n

Creemos una aplicación CLI simple que muestre un saludo. Primero, inicializamos el proyecto con cobra-cli:

\n
cobra-cli init myapp\ncd myapp
\n

Este comando creará la estructura de archivos: main.go, cmd/root.go. Ahora agregamos el comando hello:

\n
cobra-cli add hello
\n

Después de esto, editamos el archivo cmd/hello.go:

\n
package cmd\n\nimport (\n    "fmt"\n    "github.com/spf13/cobra"\n)\n\nfunc init() {\n    rootCmd.AddCommand(helloCmd)\n}\n\nvar helloCmd = &cobra.Command{\n    Use:   "hello",\n    Short: "Muestra un saludo",\n    Long:  `El comando hello muestra un saludo personalizado al usuario.`,\n    Run: func(cmd *cobra.Command, args []string) {\n        name, _ := cmd.Flags().GetString("name")\n        if name == "" {\n            name = "World"\n        }\n        fmt.Printf("Hello, %s!\\n", name)\n    },\n}\n\nfunc init() {\n    helloCmd.Flags().StringP("name", "n", "", "Nombre para el saludo")\n}
\n

Ahora ejecute la aplicación:

\n
go run main.go hello --name "Alice"\n# Salida: Hello, Alice!\n\ngo run main.go hello\n# Salida: Hello, World!
\n\n

Métodos y funciones principales de Cobra

\n\n

1. cobra.Command — creación de un comando

\n

Qué hace: Define un nuevo comando en la aplicación CLI. Es el bloque de construcción principal de Cobra.

\n

Parámetros:

\n
    \n
  • Use — nombre del comando y patrón de uso (por ejemplo, "hello [name]")
  • \n
  • Short — descripción breve (se muestra en la lista de comandos)
  • \n
  • Long — descripción detallada (se muestra en la ayuda)
  • \n
  • Run — función que se ejecuta al invocar el comando
  • \n
  • Args — validador de argumentos (por ejemplo, cobra.ExactArgs(2))
  • \n
\n
var versionCmd = &cobra.Command{\n                    

Recommendations