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.