我有一个 Go Cobra CLI 应用程序,我想在没有任何子命令的情况下运行 root 命令时基于用户输入在无限循环中运行子命令。
myapp
有 3 个子命令;list
,delete
和create
. 通常,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())
}
有没有好的方法来做到这一点?