8 个版本
0.1.7 | 2023 年 6 月 6 日 |
---|---|
0.1.6 | 2023 年 5 月 16 日 |
0.1.4 | 2023 年 4 月 7 日 |
0.1.2 | 2023 年 3 月 29 日 |
#341 在 数据库接口
1,411 每月下载量
用于 2 crates
40KB
881 行
json-schema-diff
一个正在进行的工具,用于比较 JSON 模式的更改。许多 JSON 模式功能尚未实现,因此被忽略,请参阅 问题跟踪器。
请将该工具作为在 CI 中尽力查找明显破坏性更改的最佳尝试使用,但不要用于其他更多。
该 crate 使用 draft-07,但即使是这个也在进行中。
通过 CLI 使用
安装 Rust 和
cargo install json-schema-diff
cat schema-old.json schema-new.json
# {"type": "string"}
# {"type": "boolean"}
cargo run --features=build-binary -- \
schema-old.json \
schema-new.json
# {"path":"","change":{"TypeRemove":{"removed":"string"}},"is_breaking":true}
# {"path":"","change":{"TypeAdd":{"added":"boolean"}},"is_breaking":false}
Sentry 使用此工具在 sentry-kafka-schemas
中为拉取请求添加对模式定义进行的破坏性更改的注释。它通过 CLI 工具对 master 中的模式与 PR 中的模式进行比较,并使用 Python 脚本进行后处理,以便人类消费。
is_breaking
只是一个建议。您可以选择完全忽略它,并在包装脚本中定义哪些类型的更改对您来说是破坏性的。
作为库的使用
use json_schema_diff::*;
let lhs = serde_json::json! {{
"type": "string",
}};
let rhs = serde_json::json! {{
"type": "boolean",
}};
assert_eq!(
json_schema_diff::diff(lhs, rhs).unwrap(),
vec![
Change {
path: "".to_owned(),
change: ChangeKind::TypeRemove { removed: JsonSchemaType::String }
},
Change {
path: "".to_owned(),
change: ChangeKind::TypeAdd { added: JsonSchemaType::Boolean }
}
]
);
许可证
Apache 2.0 许可
依赖关系
~1.9–3MB
~59K SLoC