与shell无关的跨平台自动完成规范-OpenAutoComplete

2020-05-21 12:14:55

如今,应用程序开发人员必须自己为他们的应用程序提供每个shell的自动完成脚本。通常,它们为bash、zsh和fish提供自动补全,而其他shell必须支持这些补全(如果可能的话,这项任务并不容易)。

我们希望应用程序能够以一种单一的方式为用户的shell提供自动完成规范。

该规范应该具有以声明方式创建CLI自动完成的方法,大多数情况下不使用shell脚本。

用最少的非标准工具为每个可用的shell编写自动完成模块应该不是什么大问题。我们的目标shell有:bash、zsh、fish、powerShell等。

OAC使用JSON,因此运行时实现者可以使用用于Unix shell的JQ、PowerShell中的ConvertFrom-Json和其他常用方法来解析OAC文档。

这是针对命令的,比如tar,它可以提供一些机器可读的列表,可以使用简单的正则表达式解析这些列表,并将其转换为枚举列表。此外,它还可以用于命令,这些命令可以提供自己的自动完成列表,如DotNet。

我们自己提供python自动补全,-m<;arg>;之后包含委托模式。当用户调用自动完成(双TAB)时,Runtime获取python的定义,然后进入委托内部的命令,并尝试获取Django包的OAC定义(如何?)。如果成功,它将返回当前可用的Django命令列表:[check,pilemessages,createcachetable,dbshell,Diffsettings,dump pdata,flush,spectdb,.]。

嗯,为了使补全功能更强大,某种依赖于shell的脚本将是有用的(但不鼓励)。不过,我们应该考虑安全问题。