插件
Rsh 可以通过插件进行扩展。插件的行为与 Rsh 的内置命令很相似,另外的好处是它们可以与 Rsh 本身分开添加。
Rsh 的插件是可执行的;Rsh 在需要时启动它们,并通过 stdin, stdout 和 stderr 与它们进行通信。Rsh 的插件可以使用 JSON 或 Cap'n Proto 作为它们的通信编码方式。
添加一个插件
要添加一个插件,请调用register
命令来告诉 Rsh 在哪里可以找到它,与此同时,你还需要告诉 rsh
这个插件使用什么方式进行编码。
Linux+macOS:
> register --encoding=capnp ./my_plugins/my-cool-plugin
Windows:
> register --encoding=capnp .\my_plugins\my-cool-plugin.exe
当
register
被调用时:
- Rsh 启动该插件并通过 stdin 向其发送 "签名" 信息;
- 插件通过 stdout 响应,包含其签名(名称、描述、参数、标志等)的消息;
-
Rsh
将插件的签名保存在
$rsh.plugin-path
位置的文件中,因此在注册之后的多次启动中都是有效的;
一旦注册,该插件就可以作为你的命令集的一部分被使用:
> help commands | where is_plugin == true
示例
Rsh 的主版本中包含了一些插件的例子,这些例子对学习插件协议的工作方式很有帮助:
调试
调试插件的最简单方法是打印到 stderr;插件的标准错误流会通过 Rsh 重定向并显示给用户。
帮助
Rsh 的插件文档尚在撰写中,如果你对某件事情不确定 Rsh Discord上的 #plugins 频道是一个提问的好地方!