我用眼镜蛇建造CLI。
我想要创建一个名为config的新命令,它将位于文件config.go中,文件位于文件夹proxy中。
这是一个结构:
MyProject
├── cmd
| ├── proxy
| | └── config.go
| └── root.go
└── main.go 我用眼镜蛇创建了命令:
cobra add config 它在cmd下创建了该文件,我将该文件移动到proxy文件夹下(如上面的结构所示)。
问题是没有添加命令。
这是config.go代码:
// config.go
package cmd
import (
"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时看不到命令。
我做错什么了吗?
发布于 2020-04-03 14:28:35
包不包含在构建中,因此命令从不初始化。
去构建包。构建cmd包时,将编译该包中的所有go文件,并调用所有init()函数。但是,如果没有引用proxy包的内容,就不会编译它。
代理包中包含package cmd,因此该包是代理目录下的cmd包。您应该将其重命名为proxy包。
然后,将其包含在构建中。在main.go中:
import {
_ "github.com/MyProject/cmd/proxy"
}这将导致运行该包的init(),并将自身添加到命令中。
https://stackoverflow.com/questions/61011873
复制相似问题