#yaml #merging #config-file #json

app trope

配置合并到 YAML/JSON

2 个版本

使用旧的 Rust 2015

0.1.1 2018 年 8 月 22 日
0.1.0 2018 年 8 月 21 日

#13 in #merging

GPL-2.0-or-later

10KB
89

Trope 文档

Trope 是一个简单的命令行工具,用于将各种配置文件类型和环境变量合并到 YAML 或 JSON。它是一个纯 Rust 实现,旨在追求速度,并展示了 Rust 处理不同类型合并的能力。它使用 clap-rs 进行 CLI 解释,使用 config-rs 进行文件处理,使用 serde 进行序列化。

支持的文件类型

Trope 支持以下文件类型作为输入

安装

用法

安装后,使用 Trope 很简单:trope [FLAGS] [OPTIONS]...
键入 trope -h 提供控制台中所有信息的列表。

特性

标志

  • -h --help 显示内联帮助

  • -V --version 显示当前版本

  • -e --env 合并任何以 'TROPE' 为前缀的环境变量

  • -d --debug 当设置时,trope 显示合并后的配置而不是写入文件

    注意:必须满足 --output

选项

  • -I --input 用于添加合并候选者,语法:PATH/FILENAME.extension,每个候选者由空格分隔
  • -O --output 定义或创建所需的输出文件,语法:PATH/FILENAME.extension

示例

使用以下列出的三个示例文件:Settings.yamlServer.tomlJohndoe.json

Settings.yaml

---
debug: false
port: 8080
host: 0.0.0.0
test-float: 3.4
test-int: 43
array:
  - One
  - two:
      a: 1
      b: 2
  - three

Server.toml

[servers]

  [servers.alpha]
  ip = "10.0.0.1"
  dc = "eqdc10"

  [servers.beta]
  ip = "10.0.0.2"
  dc = "eqdc10"
  country = "中国"

Johndoe.json

{
    "name": "John Doe",
    "age": 40,
    "address": {
      "street": "11 Castle Lane",
      "city": "London"
    },
    "phones": [
      "+44 1234567",
      "+44 2345678"
    ]
  }

从工作目录运行 trope -I Settings.yaml Server.toml Johndoe.json -O output.yaml 将返回名为 output.yaml 的文件

---
age: 40
"test-int": 43
address:
  street: 11 Castle Lane
  city: London
host: 0.0.0.0
phones:
  - +44 1234567
  - +44 2345678
name: John Doe
port: 8080
array:
  - One
  - two:
      b: 2
      a: 1
  - three
debug: false
servers:
  beta:
    dc: eqdc10
    ip: 10.0.0.2
    country: 中国
  alpha:
    ip: 10.0.0.1
    dc: eqdc10
"test-float": 3.4

已知错误

  • Trope 错误地处理 -inf+infNaN 值。它以不可预测的方式处理这些值,如果可能的话应避免使用。这是由于使用的库,随着这些库的更新将会纠正。

依赖关系

~3.5MB
~62K SLoC