#yaml #json #json-file #json-format #combine #combining #kubernetes

app yamine

一个简单的 CLI 工具,用于合并 JSON 和 YAML 文件

3 个版本

0.4.2 2023 年 11 月 14 日
0.4.1 2023 年 11 月 14 日
0.4.0 2023 年 11 月 13 日

#7 in #combining

Apache-2.0

22KB
511

yamine Mean Bean CI

一个简单的 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 yaminecargo 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