预提交 - 验证类似 json 的文件

问题描述 投票:0回答:1

在我们的项目中,我们添加了大量的

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”
}
json schema pre-commit pre-commit.com
1个回答
0
投票

该挂钩默认使用 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$

免责声明:我写了预提交

© www.soinside.com 2019 - 2024. All rights reserved.