当文件位于文件夹中时,无法添加新的 cobra CLI 命令

我正在使用 cobra 构建 CLI。

我想创建一个名为的新命令config,该命令将位于文件config.go和文件夹内的文件proxy中。


这是结构:


MyProject

├── cmd

|  ├── proxy

|  |    └── config.go

|  └── root.go

└── main.go  

我用 cobra 创建了命令:


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。

我做错了什么吗?


繁星coding
浏览 102回答 1
1回答

至尊宝的传说

该包不包含在构建中,因此该命令永远不会初始化。Go 构建包。构建cmd包时,该包中的所有 go 文件都将被编译,所有init()函数都将被调用。但是如果没有引用proxy包,它就不会被编译。您的代理包package cmd在其中,因此该包是cmd代理目录下的包。您应该将其重命名为proxypackage。然后,将其包含在构建中。在 main.go 中:import {  _ "github.com/MyProject/cmd/proxy"}这将导致该init()包运行,并将自身添加到命令中。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go