1 个不稳定版本
0.1.0 | 2023年7月12日 |
---|
#2895 in 解析实现
29KB
597 行
PICNIC 是配置符号解释器/转换器 🦀
PICNIC
PICNIC 的名字由人工智能驱动,这立即让它值得一试
人类:请为一个解释配置文件并打印环境变量的 CLI 项目想一个递归的名字。
ChatGPT:这听起来像是一个有用的工具!给它取名叫 PICNIC 怎么样,代表 "PICNIC Is Config Notation Interpreter/Converter"。这个名字符合你想要的递归缩略词风格,同时也给人一种轻松简单的印象,就像使用这个工具处理各种配置文件格式一样轻松。
特性
✅ 从 json
和 .env
文件中提取数据(很快会有 yaml
,toml
,csv
,xml
)
✅ 与文件格式相同的语法匹配键
✅ 输出匹配的结果,或全部内容。使用 eval
源
✅ 可选地生成打印值的微小二进制文件(当不在 shell 脚本中时很有用,例如 Nix)
安装
从 crates.io
cargo install picnic-rs
(我正在尝试获取 picnic
的所有权)
用法
一些 JSON 示例。其他格式的用法类似。使用 picnic --help
获取更多信息。
// some.json
{
"foo": "bar",
"baz": {
"quz": "qork"
},
"boo": [
"bah",
{
"lol": "lurg"
}
]
}
$picnic some.json
输出
baz.quz=qork; export baz.quz;
boo.0=bah; export boo.0;
boo.1.lol=lurg; export boo.1.lol;
foo=bar; export foo;
评估输出以设置环境变量
eval $(picnic some.json)
⭐ 匹配模板
将你想要提取的值替换为 $
变量
$picnic some.json --match '{"boo": [$BAH, "lol": $LURG] }'
输出
BAH=bah; export BAH;
LURG=lurg; export LURG;
类似地,评估输出以设置环境变量。
📝 自定义分隔符和大小写选项
$picnic some.json --separator _ --casingupper
输出
BAZ_QUZ=qork; export BAZ_QUZ;
BOO_0=bah; export BOO_0;
BOO_1_LOL=lurg; export BOO_1_LOL;
FOO=bar; export FOO;
💾 生成二进制文件
$picnic some.json --spawn/tmp
生成
$ ls /tmp
foo
baz.quz
boo.0
boo.1.lol
输出
$ ./foo
bar
$ ./baz.quz
qork
$ ./boo.0
bah
$ ./boo.1.lol
lurg
↩︎ 将 stdin 管道到 picnic
curl -o some.json http://config.com/some_json_i_know_not_to_be_malicious.json
eval $(cat some.json | picnic)
贡献
欢迎贡献!请随意打开一个问题或提交一个 PR。
许可
Apache-2.0 和 MIT
免责声明
不要评估输出或从未知文件生成二进制文件!
依赖项
~5–7.5MB
~136K SLoC