python-jsonschema / check-jsonschema

A CLI and set of pre-commit hooks for jsonschema validation with built-in support for GitHub Workflows, Renovate, Azure Pipelines, and more!
https://check-jsonschema.readthedocs.io/en/stable
Other
220 stars 40 forks source link

New builtin schema type: CITATION.cff? #502

Open henryiii opened 2 weeks ago

henryiii commented 2 weeks ago

Would it make sense to add CITATION.cff to the built-in schemas? It would be nice to have a flag and a pre-commit check for it, currently it requires:

uvx check-jsonschema --schemafile https://raw.githubusercontent.com/citation-file-format/citation-file-format/main/schema.json --no-cache --default-filetype yaml CITATION.cff

and

      - id: check-jsonschema
        name: Validate CITATION.cff
        files: ^CITATION.cff$
        types_or: [file]
        args:
          - --schemafile=https://raw.githubusercontent.com/citation-file-format/citation-file-format/main/schema.json
          - --default-filetype=yaml
          - --no-cache

(This also doesn't work for pre-commit.ci, it can't pull this file, being built-in should fix that)

Ref for CITATION.cff: https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-citation-files and links from there. Most notably, https://github.com/citation-file-format/citation-file-format/blob/main/schema-guide.md#definitionsreferencedate-published. The link above is from SchemaStore.

PS: I'm not sure why --no-cache is required, it gets a completely incorrect file if not passed. Maybe it's caching on the name schema.json?

sirosen commented 1 week ago

I'm generally pretty open to adding new schemas, so sure!

(I'd like to get all of schemastore included at some point, but there are a few problems associated with that.)

If you want to open a PR, I think I have the process documented in the contrib doc. Or I can look at this when I'm back next week. The only thing which might need special handling is the .cff extension. Is the file actually JSON?

PS: I'm not sure why --no-cache is required, it gets a completely incorrect file if not passed. Maybe it's caching on the name schema.json?

It is using the name, yeah. 😢 I want to redo the caching mechanism at some point to fix this, which shouldn't be that hard. The CLI option for setting the filename to use in the cache could go away too, which is a win.

I would still like to have a cache which can be navigated without a special tool, so I will probably do something like...

Or maybe a small SQLite DB.

henryiii commented 1 week ago

I'd like to get all of schemastore included at some point

I've got a mostly automatic mirror of the pyproject.toml part of SchemaStore at https://github.com/henryiii/validate-pyproject-schema-store, it might look something like that.

The .cff file is JSON. It's not recognized as JSON automatically since it's an overloaded extension. This file, though, will always have the base name CITATION.

I can do it eventually, but it might be a week or two.