V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
tlmn
V2EX  ›  Go 编程语言

golang 有什么好用的命令行解析实现库么

  •  
  •   tlmn · 2022-04-23 01:38:24 +08:00 · 2307 次点击
    这是一个创建于 706 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在需要一个 command line 解析的库,需要能够实现:

    - command 自动补全(这里的 command 并非操作系统的命令,而是我代码中写好的 Action )
    - 在输入时能够提示当前输入对应的哪几个 command (比如输入 h/H 提示 Help 、Hash 等)
    - 能够一定情况下补全系统文件名称(比如在某个 command 后输入了 /etc/ 能够自动检索当前系统目录并给出类似 pty 的提示)
    

    目前看到 github 有个 github.com/chzyer/readline 的库能够实现部分场景的需求,请教一下万能的 v 友是否有其它推荐?

    15 条回复    2022-04-23 19:38:58 +08:00
    kwanzaa
        1
    kwanzaa  
       2022-04-23 01:59:53 +08:00
    最近也在看,碰壁了。
    Cobra 虽说能实现,但我 demo 没有成功。
    Vegetable
        2
    Vegetable  
       2022-04-23 02:44:13 +08:00
    你这些功能都不是命令行本身提供的,是 shell 提供的。尤其是 3

    类似 cobra 这样的库,可以提供自动生成 shell 补全所需要的脚本。
    https://github.com/spf13/cobra/blob/master/shell_completions.md
    Kobayashi
        3
    Kobayashi  
       2022-04-23 03:08:22 +08:00 via Android
    文不对题。你说的这些和命令行解析一点关系都没有。
    补全属于 shell 的功能,需要写 shell 补全文件声明如何补全。
    0o0O0o0O0o
        4
    0o0O0o0O0o  
       2022-04-23 08:57:45 +08:00 via iPhone
    #2 #3 OP 说的 command 补全和 shell 补全应该是不一样的。

    类似于
    $ openssl ran
    补全 rand ,这是 shell

    $ openssl
    > ran
    这类补全我一直以为是程序处理的
    lijiangang886
        5
    lijiangang886  
       2022-04-23 09:07:51 +08:00
    可能跑题,一个栗子,kubectl 的命令行补全是它自己提供的一个一万多行( bash 版本)的补全脚本,然后 shell 来 source 这个脚本
    https://kubernetes.io/docs/reference/kubectl/cheatsheet
    kkhaike
        6
    kkhaike  
       2022-04-23 09:12:34 +08:00
    我的项目一般都用
    github.com/urfave/cli/v2
    tlmn
        7
    tlmn  
    OP
       2022-04-23 12:20:15 +08:00
    回复上楼的回复,我的理解这确实是 shell 的补全,但又感觉说是 shell 不太合适,毕竟是程序自己实现的补全,因此记录为命令行补全。
    tlmn
        8
    tlmn  
    OP
       2022-04-23 12:21:45 +08:00
    @0o0O0o0O0o 对的,我需要的就是这种程序处理的补全,希望看看有没有自动化实现的库,只需要定义命令,其它的交由库去实现。
    tlmn
        9
    tlmn  
    OP
       2022-04-23 12:22:19 +08:00
    @Vegetable 我需要的不是这种类型的 shell 补全,可以参考一下四楼。
    SenLief
        10
    SenLief  
       2022-04-23 13:09:18 +08:00
    我的理解你可能需要的是 cli 的补全。
    看下这个库符不符合。https://github.com/c-bata/go-prompt
    tlmn
        11
    tlmn  
    OP
       2022-04-23 14:32:43 +08:00
    @SenLief 感谢,看了一下符合需求。
    deacyn
        12
    deacyn  
       2022-04-23 17:18:39 +08:00 via iPhone
    @kkhaike 为什么打开是 404 呢
    kkhaike
        13
    kkhaike  
       2022-04-23 17:22:52 +08:00
    kkhaike
        14
    kkhaike  
       2022-04-23 17:23:41 +08:00
    Radiation
        15
    Radiation  
       2022-04-23 19:38:58 +08:00
    @deacyn 你去掉 v2 就行了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1185 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:08 · PVG 07:08 · LAX 16:08 · JFK 19:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.