shell的JSON-RPC标准
jshlib的Python项目详细描述
jsh:shell的JSON-RPC标准
jsh
指两者:
- jsh:“shell脚本”能够相互对话的标准协议
以类似于JSON-RPC的方式,以及
jshlib.py
单文件python 库引用实现 jsh
:一个用于转换标准类shell参数的命令行工具 变成json。
jsh规范几乎与JSON-RPC 2.0规范相同。它是
采用jsonrpc兼容json的命令行程序规范
blob通过参数--jsh-request
参数。即,如果支持ls
jsh以下功能可能类似:
ls --all /foo/bar REQUEST='{ "jsonrpc":"2.0", "method":"ls", "params":{"all":true, "path": "/foo/bar"}}' ls --jsh-request "$REQUEST" ls --jsh-request $(jsh m=ls --all=true --path='"/foo/bar"')
除此之外,当通过--jsh-request
时,jsh还需要以下内容:
- 必须在stdout上输出有效的json,除非有文档记录的应用程序
在
params
或method
中定义的标志另有规定(即方法vs 方法二进制)- 如果输出多个“结果”(即文件列表、搜索结果,
等),必须
将它们输出为用新行分隔的单独记录
\n
- 这些可以通过
jshlib.load_jsh
迭代地注入。
- 如果输出多个“结果”(即文件列表、搜索结果,
等),必须
将它们输出为用新行分隔的单独记录
- 应该在 窗体(允许使用其他键)
{"lvl":"ERROR","msg":"this is a message"}
JSH是为构建系统而显式开发的,通常需要 使用许多不同的编程语言组合来自多个阶段的输出。 然而,它的目的更广泛:
- Elminiate输出的易出错解析,改用JSON。
- 开发人员工具的标准可组合性,无论是在操作系统级别还是更高级别。
- 仍然允许任何语言的快速开发和原型。
- 启用json查询工具(如
jq
)的用户来咀嚼和重定向数据, 与基于文本的工具(如awk
或sed
)相反。 - 允许快速“托管”shell脚本。
- 通过web请求使它们工作起来很简单,允许更快、更干净 系统管理接口。
用法和API
pip install jshlib
jsh
命令行工具
带有命令行工具jsh
,它可以:
- 创建与JSH兼容的命令一起使用的
json-rpc
请求 - (未来)将json格式化为更可读的格式
- (将来)为某些格式的输出创建格式良好的表
jshlib python库
以下功能和类型至关重要:
parse_jsh_argv
:解析用于jsh遵从性的argv
命令行参数Request
和Error
对象,它们表示适当的json-rpc对象。dump_stdout
和dump_stderr
用于转储python对象(dict、list、int等) 到各自的输出。load_json_iter
将从流(即。 stdin、stdout、文件套接字等)。这允许半性能链接 jsh工具,假设每一个工具都输出其“记录” 可用。
计划尽快支持更多的语言。
许可证
源代码是根据
- apache许可证,版本2.0,(LICENSE-APACHE或 http://www.apache.org/licenses/LICENSE-2.0)
- 麻省理工学院许可证(LICENSE-MIT或 http://opensource.org/licenses/MIT)
由你选择。
除非您明确说明,否则任何有意提交的出资 对于您在Apache-2.0许可证中定义的工作,应 按上述要求获得双重许可,无任何附加条款或条件