我正在使用 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 關注
- 132 瀏覽
添加回答
舉報
0/150
提交
取消