Skip to main content

Module lint

Module lint 

Source
Expand description

doiget lint <path> — structural validation of a BibTeX bibliography, independent of DOI resolution (doiget verify’s job).

Read-only: lint never rewrites the file. It is also math-aware — inline $...$ in a title is content, not a malformed field — so a hand-edited maths title (e.g. $T\bar{T}$) survives untouched and is never flagged.

One JSON-Lines record per finding on stdout: {"key","entry_type","rule","severity","message"}. The summary goes to stderr unless --quiet.

Rules and default severity:

  • parse_error (error) — the file is not parseable BibTeX. The biblatex parser also rejects duplicate / blank citation keys at this stage, so those surface as a parse_error (with a descriptive message) rather than via a dedicated rule.
  • missing_required_field (warning) — an expected field for the entry type is absent. Advisory: real-world .bib files are often loose, so this is a comment, not a failure.
  • empty_field (warning) — a present field is blank / whitespace.
  • title_math_hazard (warning) — a title carries $$ display math, which some downstream renderers (e.g. DocumenterCitations) cannot process; inline $...$ is fine. Best-effort, advisory.

Exit code = number of error findings (capped at 255). --strict promotes warnings so that ANY finding fails the run.

Functions§

run
Entry point for doiget lint <path> [--strict].