Creando una app de linea de comandos con cobra


Para crear una herramienta de línea de comandos con cobra primero debemos crear el directorio dónde el código va a estar alojado.

$ mkdir mycli
$ go mod init github.com/truora/mycli
go: creating new go.mod: module github.com/truora/mycli
$ go get -u github.com/spf13/cobra/cobra
$ cobra init --pkg-name=github.com/truora/mycli -a 'My Name' .
Your Cobra application is ready at …

Después de ejecutar estos pasos, ya tendremos la base de nuestra aplicación, podemos correrla con:

$ go run main.go

Ahora ya podemos agregar un comando para nuestra herramienta:

$ cobra add command

El anterior comando genera el archivo cmd/command.go que tendremos que editar para agregar la funcionalidad deseada:

// commandCmd represents the analyze command
var commandCmd = &cobra.Command{
	Use:   "analyze",
	Short: "A brief description of your command",
	Long: `A longer description that spans multiple lines and likely contains examples
and usage of using your command. For example:

Cobra is a CLI library for Go that empowers applications.
This application is a tool to generate the needed files
to quickly create a Cobra application.`,
	Run: func(cmd *cobra.Command, args []string) {
		fmt.Println("command called")
	},
}

Aquí podremos modificar la función Run para hacer cualquier cosa que queramos. Por ahora simplemente probemos que funciona:

$ go run main.go command
command called

Lo aconsejable es que crees otros paquetes con la funcionalidad y los uses desde la función Run para mantener el código del comando muy pequeño.

Y eso es todo, ahora puedes empezar a agregarle funcionalidad a tu herramienta de línea de comandos.

cli  cobra  golang 

Ver también