21个稳定版本
2.1.2 | 2024年8月9日 |
---|---|
2.1.1 | 2024年7月31日 |
2.0.2 | 2024年6月11日 |
1.0.21 | 2024年4月24日 |
1.0.10 | 2023年11月10日 |
#151 在 命令行工具 中
693 每月下载次数
720KB
14K SLoC
minijinja-cli
minijinja-cli
是一个命令行可执行文件,它使用 MiniJinja 将Jinja2模板直接从命令行渲染到stdout。
您可以使用Shell安装程序自动安装二进制文件
curl -sSfL https://github.com/mitsuhiko/minijinja/releases/latest/download/minijinja-cli-installer.sh | sh
或手动下载二进制文件
- aarch64-apple-darwin (Apple Silicon macOS)
- x86_64-apple-darwin (Intel macOS)
- x86_64-pc-windows-msvc (x64 Windows)
- x86_64-unknown-linux-gnu (x64 Linux, GNU)
- x86_64-unknown-linux-musl (x64 Linux, MUSL)
您也可以使用 cargo
编译它
cargo install minijinja-cli
然后像这样运行
minijinja-cli my-template.j2 data.json
参数
minijinja-cli
有两个位置参数用于引用文件。其中任何一个都可以设置为 -
以从stdin读取。这是模板的默认设置,但一次只能设置一个stdin。
[TEMPLATE]
:第一个参数是模板的文件名。如果没有提供,则默认为-
,这意味着它从stdin加载模板。[DATA]
:第二个参数是数据文件的路径。这是一个包含应渲染的输入变量的文件。支持各种文件格式。当从stdin
读取数据时,必须指定--format
,因为自动检测基于文件扩展名。
选项
-f
,--format
<FORMAT>
:这定义了数据文件的输入格式。默认是auto
,它会根据文件扩展名自动检测。有关支持的格式,请参阅下一节。-
,--autoescape
<MODE>
:选择一个自动转义模式。默认是自动检测(auto
),基于文件扩展名。选项包括none
禁用转义,html
启用 HTML/XML 转义,json
启用 JSON(兼容 YAML)序列化。-D
,--define
<EXPR>
:从一个表达式定义一个变量。支持的格式有NAME
用于定义变量NAME
,其值为true
,NAME=VALUE
用于定义变量NAME
,其值为字符串VALUE
或NAME:=VALUE
用于将变量NAME
设置为 YAML 解释的值VALUE
。当 YAML 支持未启用时,:=
只支持 JSON。--strict
:启用严格模式。在渲染时,未定义的变量将引发错误。--no-include
:禁止从文件系统包含或扩展模板。--no-newline
:不输出尾部换行。--trim-blocks
:启用 trim_blocks 标志。--lstrip-blocks
:启用 lstrip_blocks 标志。--py-compat
:启用改进的 Python 兼容性。启用此选项将添加方法,如dict.keys
以及其他一些方法。-
,--syntax <PAIR>
:更改一个语法功能(feature=value)[可能的功能:block-start
,block-end
,variable-start
,variable-end
,comment-start
,comment-end
,line-statement-prefix
,line-statement-comment
]--safe-path <PATH>
:仅允许从此路径包含。可以使用多次。--env
:将环境变量传递到模板中的变量ENV
。-E
,--expr
<EXPR>
:不是渲染模板,而是评估一个表达式。结果的处理由--expr-out
决定。--expr-out
<MODE>
:设置表达式输出模式。默认是print
。print
仅打印表达式输出,json
将其作为JSON序列化值输出,status
隐藏输出但报告退出状态。true
转换为0
,而false
转换为1
。数值结果保持不变。--fuel
<AMOUNT>
:设置发动机的最大燃料。当发动机耗尽燃料时将报错。--repl
:为MiniJinja表达式启动交互式读取-评估-打印循环。--dump
<KIND>
:打印模板的内部结构。可能的选项包括tokens
查看分词器的输出,ast
查看解析后的AST,以及instructions
检查编译的字节码。-o
、--output
<FILENAME>
:将输出写入文件名而不是标准输出。--select
<SELECTOR>
:选择输入数据的路径。--generate-completion
<SHELL>
:为给定的shell生成补全。--version
:打印版本。--help
:打印帮助。
格式
以下格式被支持
json
(*.json
,*.json5
):JSON5(如果未编译JSON5,则为JSON)yaml
(*.yaml
,*.yml
):YAMLtoml
(*.toml
):TOMLcbor
(*.cbor
):CBORquerystring
(*.qs
):URL编码的查询字符串ini
(*.ini
,*.config
,*.properties
):纯文本INI文件
对于大多数格式,它们在模板上下文中的映射非常直接。目前唯一的例外是INI文件,其中部分是强制性的。如果键放置在未命名的部分中,则第二个部分将重命名为default
。您可以使用--select
来隐式创建一个部分。
minijinja-cli template.j2 input.ini --section default
请注意,并非所有格式都支持所有输入类型。例如,查询字符串和INI主要只支持字符串。
选择
默认情况下,输入文件会直接作为上下文。但是,您也可以选择文件的一部分。例如,如果您有一个所有变量都放在 values
部分的 TOML 文件,您通常需要这样引用值
{{ values.key }}
然而,如果您使用 --select=values
调用 minijinja-cli,您可以直接引用键
{{ key }}
示例
使用字符串和整数变量渲染模板
minijinja-cli template.j2 -D name=World -D count:=3
使用标准输入中的变量渲染模板
echo '{"name": "World"}' | minijinja-cli -f json template.j2 -
评估表达式并打印结果
minijinja-cli --env -E "ENV.HOME or ENV.USERPROFILE"
交互式编程环境 (REPL)
minijinja-cli --repl -D name=World
MiniJinja Expression REPL
Type .help for help. Use .quit or ^D to exit.
>>> name|upper
"WORLD"
>>> range(3)
[0, 1, 2]
行为
模板可以扩展其他模板或包含它们。路径相对于父模板。因此,当您位于 foo/bar.j2
并包含 utils.j2
时,它将加载 foo/utils.j2
。出于安全原因,可以使用 --no-include
禁用模板的包含。
所有来自 MiniJinja 和 minijinja-contrib
的过滤器和函数都可用。
在失败时,堆栈跟踪将渲染到标准错误。
repl
模式允许您执行 MiniJinja 表达式。
编译时功能
默认情况下,所有功能都已启用。以下功能可以在默认值关闭时显式选择
yaml
:启用 YAML 支持toml
:启用 TOML 支持cbor
:启用 CBOR 支持json5
:启用 JSON5 支持(而不是 JSON)querystring
:启用查询字符串支持ini
:启用 INI 支持datetime
:启用日期和时间过滤器以及now()
函数completions
:启用补全的生成unicode
:启用 Unicode 标识符支持contrib
:启用基于minijinja_contrib
的功能,包括--py-compat
标志
此外,如果在编译期间设置了 ASSET_OUT_DIR
环境变量,则将生成手册页(和可选的补全)到该文件夹。
赞助商
如果您喜欢这个项目并觉得它很有用,您可以通过 成为赞助商。
许可证和链接
- 问题跟踪器
- 许可证: Apache-2.0
依赖关系
~4–15MB
~201K SLoC