Я клонировал приложение go на основе кобры и гадюки. Здесь команды вызываются с помощью cli следующим образом:
./<my go tool> <command> --<command-flag1>
Фрагмент кода для этого кода выглядит следующим образом:
package cmd
import (
"fmt"
"os"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)
var viperCon *viper.Viper
var cmd1 = &cobra.Command{
Use: "cmd1",
Short: "Do xyz",
Long: "Do xyz",
Run: func(cmd *cobra.Command, args []string) {
config := getConfig(viperCon)
res, err := myTool.ExecCmd(config)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
}
func init() {
rootCmd.AddCommand(cmd)
// set the config provided by the flags and default values
viperCon = setConfig()
...
}
Я собираюсь написать тесты для всех таких команд, чтобы увидеть,они работают нормально. Любая ссылка на указатель / код, касающаяся того, как начать, была бы отличной.