现在需要一个 command line 解析的库,需要能够实现:
- command 自动补全(这里的 command 并非操作系统的命令,而是我代码中写好的 Action )
- 在输入时能够提示当前输入对应的哪几个 command (比如输入 h/H 提示 Help 、Hash 等)
- 能够一定情况下补全系统文件名称(比如在某个 command 后输入了 /etc/ 能够自动检索当前系统目录并给出类似 pty 的提示)
目前看到 github 有个 github.com/chzyer/readline 的库能够实现部分场景的需求,请教一下万能的 v 友是否有其它推荐?
1
kwanzaa 2022-04-23 01:59:53 +08:00
最近也在看,碰壁了。
Cobra 虽说能实现,但我 demo 没有成功。 |
2
Vegetable 2022-04-23 02:44:13 +08:00
你这些功能都不是命令行本身提供的,是 shell 提供的。尤其是 3
类似 cobra 这样的库,可以提供自动生成 shell 补全所需要的脚本。 https://github.com/spf13/cobra/blob/master/shell_completions.md |
3
Kobayashi 2022-04-23 03:08:22 +08:00 via Android
文不对题。你说的这些和命令行解析一点关系都没有。
补全属于 shell 的功能,需要写 shell 补全文件声明如何补全。 |
4
0o0O0o0O0o 2022-04-23 08:57:45 +08:00 via iPhone
#2 #3 OP 说的 command 补全和 shell 补全应该是不一样的。
类似于 $ openssl ran 补全 rand ,这是 shell $ openssl > ran 这类补全我一直以为是程序处理的 |
5
lijiangang886 2022-04-23 09:07:51 +08:00
可能跑题,一个栗子,kubectl 的命令行补全是它自己提供的一个一万多行( bash 版本)的补全脚本,然后 shell 来 source 这个脚本
https://kubernetes.io/docs/reference/kubectl/cheatsheet |
6
kkhaike 2022-04-23 09:12:34 +08:00
我的项目一般都用
github.com/urfave/cli/v2 |
7
tlmn OP 回复上楼的回复,我的理解这确实是 shell 的补全,但又感觉说是 shell 不太合适,毕竟是程序自己实现的补全,因此记录为命令行补全。
|
8
tlmn OP @0o0O0o0O0o 对的,我需要的就是这种程序处理的补全,希望看看有没有自动化实现的库,只需要定义命令,其它的交由库去实现。
|
10
SenLief 2022-04-23 13:09:18 +08:00
我的理解你可能需要的是 cli 的补全。
看下这个库符不符合。https://github.com/c-bata/go-prompt |
13
kkhaike 2022-04-23 17:22:52 +08:00
|
14
kkhaike 2022-04-23 17:23:41 +08:00
|