0Pricing
Go Academy · Lección

Fundamentos de Cobra

Comando raíz, Run, Args y generación de ayuda

Fundamentos de Cobra es una lección gratuita de Go Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Go Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Go Academy incluye 4 lecciones en total.

¿Qué es Cobra?

Cobra es la biblioteca de Go más popular para crear aplicaciones CLI. Proporciona comandos, flags, subcomandos, generación de ayuda, finalización de shell y validación de argumentos.

Instalación de Cobra

Añada cobra como dependencia y, opcionalmente, utilice el generador de CLI:

go get github.com/spf13/cobra
// Optional: cobra-cli for scaffolding
go install github.com/spf13/cobra-cli@latest
cobra-cli init myapp

Comando raíz

Toda aplicación de Cobra tiene un comando raíz. Defínalo con Use, una descripción Short y una función Run:

var rootCmd = &cobra.Command{
    Use:   "myapp",
    Short: "My awesome CLI",
    Run: func(cmd *cobra.Command, args []string) {
        fmt.Println("Hello from root!")
    },
}
func main() { rootCmd.Execute() }

Estructura cobra.Command

Campos clave: Use (nombre y sinopsis del comando), Short (descripción de una línea), Long (ayuda detallada), Run (ejecuta el comando), RunE (devuelve un error).

RunE para propagar errores

Utilice RunE en lugar de Run para devolver errores. Cobra muestra el error y sale automáticamente con un código distinto de cero.

var rootCmd = &cobra.Command{
    RunE: func(cmd *cobra.Command, args []string) error {
        return doWork()
    },
}

Adición de subcomandos

Cree los subcomandos como valores cobra.Command independientes y añádalos al comando raíz con AddCommand:

var serveCmd = &cobra.Command{
    Use:   "serve",
    Short: "Start the server",
    RunE:  runServe,
}
func init() { rootCmd.AddCommand(serveCmd) }

Estructura del proyecto de Cobra

Diseño convencional: un directorio cmd/ con un archivo por subcomando, además de root.go. main.go solo llama a cmd.Execute().

cmd/
  root.go    // rootCmd definition
  serve.go   // serveCmd
  migrate.go // migrateCmd
main.go

Validación de argumentos

Utilice validadores integrados como cobra.ExactArgs, MinimumNArgs o una función ValidArgsFunction personalizada:

var cmd = &cobra.Command{
    Args: cobra.ExactArgs(2),
    RunE: func(cmd *cobra.Command, args []string) error {
        fmt.Println(args[0], args[1])
        return nil
    },
}

Ayuda generada automáticamente

Cobra genera automáticamente --help / -h para cada comando y un subcomando help. El texto procede de Use, Short, Long y los flags.

Finalización de shell

Cobra genera de forma predeterminada scripts de finalización para bash, zsh, fish y PowerShell mediante rootCmd.GenBashCompletion o el subcomando integrado completion.

Integración con Viper

Combine Cobra con Viper para gestionar la configuración: los flags definidos con Cobra se vinculan a claves de Viper, por lo que los valores pueden proceder de flags, variables de entorno o archivos de configuración.

Comprobación rápida

¿Cuál es la diferencia entre cobra.Command.Run y RunE?

Resumen: fundamentos de Cobra

Puntos clave:

  • cobra.Command con Use/Short/RunE es el componente básico
  • rootCmd.AddCommand(subCmd) para comandos jerárquicos
  • cobra.ExactArgs/MinimumNArgs para validar argumentos
  • La ayuda y la finalización se generan automáticamente

Preguntas frecuentes

¿La lección «Fundamentos de Cobra» es gratis?

Sí — el texto completo de «Fundamentos de Cobra» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Go Academy, actualiza a CoddyKit PRO. El curso de Go Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Fundamentos de Cobra»?

Comando raíz, Run, Args y generación de ayuda Practicas Go Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Go Academy?

No se requiere experiencia previa. Go Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Fundamentos de Cobra»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Go Academy?

Sí. Cada lección de Go Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Fundamentos de Cobra
  2. Flags y flags persistentes
  3. Subcomandos y grupos de comandos
  4. Distribución de herramientas CLI
← Volver a Go Academy