3 个版本
0.4.2 | 2023 年 11 月 14 日 |
---|---|
0.4.1 | 2023 年 11 月 14 日 |
0.4.0 | 2023 年 11 月 13 日 |
#7 in #combining
22KB
511 行
yamine
一个简单的 CLI 工具,用于合并 JSON 和 YAML 文件
安装
通过 Homebrew/Linuxbrew 提供
brewinstall avencera/tap/yamine
OR
从 GitHub 发布版安装
curl -LSfshttps://avencera.github.io/yamine/install.sh | sh -s ----git avencera/yamine
OR
使用 cargo 安装
cargo install yamine
或 cargo binstall yamine
OR
直接从 GitHub 下载发布版:github.com/avencera/yamine/releases
用法
yamine--help
Combine JSON/YAML files into a single file
Usage: yamine [OPTIONS] [FILES_OR_FOLDERS]...
Arguments:
[FILES_OR_FOLDERS]... File(s) or folder you want to run in
Options:
-i, --stdin Read from STDIN
-d, --depth <DEPTH> Number of folder depth to recurse into [default: 1]
-o, --output <OUTPUT> Output file name [default: combined.yaml]
--dry-run Default mode
-w, --write Write new output file
-s, --stdout Outputs combined file contents to STDOUT
-f, --format <FORMAT> The format for the output file, defaults to yaml [default: yaml] [possible values: yaml, json-array, json-k8s, json]
-h, --help Print help
-V, --version Print version
示例
- 合并当前文件夹中所有 yaml 和 json 文件,并创建
combined.yaml
文件yamine-w.
- 合并当前文件夹中所有 yaml 和 json 文件,并在
json-k8s
格式下创建一个combined.json
文件yamine--write--format json-k8s--output combined.json.
- 以 JSON 格式输出合并文件到 STDOUT
yamine--stdout-f json.
- 从 stdin 转换 YAML 并输出为 JSON 到 stdout
pbpaste|yamine--stdin--stdout-f json
格式
-
yaml
- 一个由---
分隔的多文档 yaml 文件(一个 kubernetes 多资源文档)--- apiVersion: traefik.containo.us/v1alpha1 kind: IngressRoute --- apiVersion: v1 kind: Namespace metadata: name: example --- kind: ServiceAccount apiVersion: v1 --- apiVersion: v1 kind: Service --- apiVersion: apps/v1 kind: Deployment
-
json
- 一个 json 文件,每个合并的文件都是数组中的一个元素[ { "apiVersion": "traefik.containo.us/v1alpha1", "kind": "IngressRoute" ... }, { "apiVersion": "v1", "kind": "Namespace", ... }, { "apiVersion": "v1", "kind": "ServiceAccount", ... }, { "apiVersion": "v1", "kind": "Service", ... }, ]
-
json-k8s
- 一个 kubernetes 多资源 json 文档示例{ "kind": "List", "apiVersion": "v1", "items": [ { "apiVersion": "traefik.containo.us/v1alpha1", "kind": "IngressRoute" ... }, { "apiVersion": "v1", "kind": "Namespace", ... }, { "apiVersion": "v1", "kind": "ServiceAccount", ... }, { "apiVersion": "v1", "kind": "Service", ... }, ] }
依赖
~11–24MB
~296K SLoC