使用 cobra,如果在没有特定操作(但参数)的情况下调用我的应用程序,我想运行默认命令:
// rootCmd represents the base command when called without any subcommands
var rootCmd = &cobra.Command{
Use: "mbmd",
Short: "ModBus Measurement Daemon",
Long: "Easily read and distribute data from ModBus meters and grid inverters",
Run: func(cmd *cobra.Command, args []string) {
run(cmd, args)
},
}
但是,由于 root 命令没有所有参数,因此子命令失败,因为它现在显然知道子命令的参数:
❯ go run main.go -d sma:126@localhost:5061 --api 127.1:8081 -v
Error: unknown shorthand flag: 'd' in -d
相对于:
❯ go run main.go run -d sma:126@localhost:5061 --api 127.1:8081 -v
2019/07/29 20:58:10 mbmd unknown version (unknown commit)
如何以编程方式实例化/调用子命令?