在我们的项目中,我们添加了大量的
json-like files
,它们具有json结构,但以.meta
扩展名命名(而不是.json
)。在将文件推送到存储库之前,我们希望根据 json-schema
验证文件。
我们已经使用了预提交工具,并且我找到了用于预提交的 check-jsonschema 挂钩:https://github.com/python-jsonschema/check-jsonschema。我已经测试了该插件,但它仅适用于以
.json
扩展名结尾的文件,而不是“.meta”扩展名,即使我通过 files
参数传递了正确的正则表达式。所以:
^data/.*\.json
-> data/file1.json
有效(发现架构违规)^data/.*\.meta
-> data/file1.meta
不起作用(跳过验证文件)
有任何解决方法可以验证带有
.meta
扩展名的文件名吗?预提交配置:
# .pre-commit-config.yaml
repos:
- repo: https://github.com/python-jsonschema/check-jsonschema
rev: '0.27.3'
hooks:
- id: check-jsonschema
name: Validate meta files
args: ["--schemafile", "schemas/my_schema.json"]
files: ^data/.*\.meta$
架构文件:
# schemas/my_schema.json
{
"type": "object",
"properties": {
"my-key": {
"type": "string"
}
},
"required": [
"my-key"
]
}
示例数据:
# data/file1.meta
# data/file1.json
{
“another-key”: “value”
}
该挂钩默认使用 types 来对文件进行分类 由于您的
.meta
文件不会被分类为
yaml
或 json
,您需要 (1) 重命名它们(通过在文件名中添加 .json
)或 (2) 覆盖过滤以通过文件名手动工作我建议添加一个特殊的挂钩并保留原来的挂钩。使用您的示例,它看起来像这样:
repos:
- repo: https://github.com/python-jsonschema/check-jsonschema
rev: '0.27.3'
hooks:
- id: check-jsonschema
# not necessary, but can be useful for `pre-commit run` if you have other `check-jsonschema` hooks
alias: check-jsonschema-meta
name: Validate meta files
args: ["--schemafile", "schemas/my_schema.json"]
types_or: [] # reset to default
files: ^data/.*\.meta$