登录
首页 >  Golang >  Go问答

Golang Cobra CLI 程序不支持 ValidArgsFunction 的动态自动完成功能

来源:stackoverflow

时间:2024-02-10 23:18:25 156浏览 收藏

Golang不知道大家是否熟悉?今天我将给大家介绍《Golang Cobra CLI 程序不支持 ValidArgsFunction 的动态自动完成功能》,这篇文章主要会讲到等等知识点,如果你在看完本篇文章后,有更好的建议或者发现哪里有问题,希望大家都能积极评论指出,谢谢!希望我们能一起加油进步!

问题内容

我正在尝试使用 cobra 自动完成,但按 tab 键后什么也没有发生 - 我认为应该自动完成的事情。我错过了什么吗?

var HelloCmd = &cobra.Command{
    Use:   "hello ",
    Short: "Say hello to someone",
    Long:  `Say hello to someone`,
    Run: func(cmd *cobra.Command, args []string) {
        fmt.Println(args)
        fmt.Println("hello " + args[0])
        cmd.Help()
    },
    ValidArgsFunction: func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
        if len(args) != 0 {
            return nil, cobra.ShellCompDirectiveNoFileComp
        }
        return []string{"steve", "john"}, cobra.ShellCompDirectiveNoFileComp
    },
}

然后我调用 go build . ,然后调用 ./program hello s[tab]./program hello j[tab] 它没有任何提示。我想建议名字“史蒂夫”和“约翰”。如果我输入 ./program hello [tab] 它会建议目录中的文件。

请帮帮我,我整个早上都在抓狂地解决这个问题!


正确答案


您需要生成自动完成脚本并将其添加到您的 shell 配置文件中,请按照以下部分操作:

Creating your own completion command

并参阅 [cmd] 完成 -h 以获得更多帮助。

到这里,我们也就讲完了《Golang Cobra CLI 程序不支持 ValidArgsFunction 的动态自动完成功能》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>