shell的JSON-RPC标准
项目描述
jsh:JSON-RPC标准用于shell
jsh
指的是
JSH
:一个标准协议,使“shell脚本”能够以类似于JSON-RPC的方式相互通信,包括一个jshlib.py
单文件Python库参考实现。jsh
:一个将标准shell-like参数转换为json的命令行工具。
JSH规范几乎与JSON-RPC 2.0规范相同。它是一个规范,用于命令行程序通过--jsh-request
参数接收jsonrpc兼容的json blob。即如果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
中指定了文档化的应用程序定义的标志(即方法与二进制方法)- 如果输出多个'结果'(例如文件列表、搜索结果等),必须以单独的记录形式输出,并用换行符
\n
分隔 - 这些可以通过
jshlib.load_jsh
迭代插入
- 如果输出多个'结果'(例如文件列表、搜索结果等),必须以单独的记录形式输出,并用换行符
- 应该向stderr输出结构化日志,每行一个json记录,格式如下(允许其他键)
{"lvl":"ERROR", "msg":"this is a message"}
JSH 是专门为构建系统开发,常需要结合多个阶段和多种编程语言的输出而设计的。然而,它的用途更加广泛。
- 使用 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 对象(字典、列表、整数等)输出到相应的输出。load_json_iter
会从流(例如 stdin、stdout、文件套接字等)持续加载 JSON 对象。这允许半高性能地链式连接 jsh 工具,假设每个工具都按其“记录”可用时输出。
计划尽快支持更多语言。
许可证
源代码许可如下
- Apache 许可证第 2 版 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 https://open-source.org.cn/licenses/MIT)
任选其一。
除非你明确表示,否则任何根据 Apache-2.0 许可证定义有意提交以包含在你的作品中的贡献,均应按上述方式双重许可,而不附加任何额外条款或条件。
项目详情
关闭
jshlib-0.1.0.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0a77d6ea6e33e89dfa6665798ebf658aa6bdeaf313c89f683e7cbc6e1dcb8cef |
|
MD5 | 7ace825665768a8e8e1ad8f128ff0177 |
|
BLAKE2b-256 | 97b124231a0c459b4c7aedccb5cf4c3f83ce433b12b27f1bdc47484ba73266a0 |