1

我有一个 Go Cobra CLI 应用程序,我想在没有任何子命令的情况下运行 root 命令时基于用户输入在无限循环中运行子命令。

myapp有 3 个子命令;list,deletecreate. 通常,Cobra 应用程序通过运行myapp list [args]等方式工作,但我希望能够运行myapp并呈现一个接受列表、删除和创建的界面,而无需myapp.

所以而不是:

$ myapp list /files
f1 f2 f3
$ myapp create /newfile
$ myapp delete /newfile

这将是:

$ myapp
> list /files
f1 f2 f3
> create /newfile
> delete /newfile

我可以在执行 root 命令时运行一个循环并接受字符串输入并运行相应的命令,但是还有更多命令,这是复制 cobra 中已经存在的功能的大量额外工作。

这是眼镜蛇rootCmd

// rootCmd represents the base command when called without any subcommands
var rootCmd = &cobra.Command{
    Use:   "server",
    Short: "A brief description of your application",
    Long:  ``,
    Run: func(cmd *cobra.Command, args []string) {
        // loop here and run commands based on user input
    },
}

func Execute() {
    cobra.CheckErr(rootCmd.Execute())
}

有没有好的方法来做到这一点?

4

0 回答 0