我正在使用 cobra 构建 CLI。我想创建一个名为的新命令config,该命令将位于文件config.go和文件夹内的文件proxy中。这是结构:MyProject├── cmd| ├── proxy| | └── config.go| └── root.go└── main.go 我用 cobra 创建了命令:cobra add config 它在下面创建了文件cmd,我将文件移动到文件proxy夹下(如上面的结构中所示)。问题是没有添加命令。这是config.go代码:// config.gopackage cmdimport ( "fmt" "github.com/spf13/cobra" "MyProject/cmd")var configCmd = &cobra.Command{ Use: "config", Short: "A brief description.", Long: `A longer description.`, Run: func(cmd *cobra.Command, args []string) { fmt.Println("config called") },}func init() { cmd.RootCmd.AddCommand(configCmd)}它构建成功,但我在运行时看不到命令MyProj.exe -h。我做错了什么吗?
1 回答
至尊宝的传说
TA贡献1789条经验 获得超10个赞
该包不包含在构建中,因此该命令永远不会初始化。
Go 构建包。构建cmd包时,该包中的所有 go 文件都将被编译,所有init()函数都将被调用。但是如果没有引用proxy包,它就不会被编译。
您的代理包package cmd在其中,因此该包是cmd代理目录下的包。您应该将其重命名为proxypackage。
然后,将其包含在构建中。在 main.go 中:
import {
_ "github.com/MyProject/cmd/proxy"
}
这将导致该init()包运行,并将自身添加到命令中。
- 1 回答
- 0 关注
- 100 浏览
添加回答
举报
0/150
提交
取消