# See https://pre-commit.com for more information # See https://pre-commit.com/hooks.html for more hooks repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v6.0.0 hooks: - id: trailing-whitespace - id: end-of-file-fixer - id: check-yaml - id: check-added-large-files - repo: local hooks: - id: forbid-ai-punctuation name: Forbid smart punctuation (en/figure dash, minus, ellipsis, arrows, smart quotes) language: pygrep entry: '(–|‒|―|−|…|→|⇐|⇒|⇔|“|”|‘|’)' files: '\.(zig|zon|md|srf|txt|toml|ya?ml)$' exclude: '^\.pre-commit-config\.yaml$' - id: forbid-prose-em-dash name: Forbid prose em-dash (use ASCII hyphen); no-data sentinel glyphs are exempt language: pygrep entry: ' — ' files: '\.(zig|zon|md|srf|txt|toml|ya?ml)$' exclude: '^(\.pre-commit-config\.yaml|src/format\.zig|src/views/projections\.zig|docs/reference/cli/milestones\.md)$' - repo: https://github.com/batmac/pre-commit-zig rev: v0.3.0 hooks: - id: zig-fmt - repo: local hooks: - id: zlint name: Run zlint # zlint accepts file paths only via stdin (-S); positional # args are interpreted as directory names and silently # produce no output. Pipe pre-commit's file list through # bash to get the paths to zlint as stdin lines. entry: bash -c 'printf "%s\n" "$@" | zlint --deny-warnings --fix -S' -- language: system types: [zig] - repo: https://github.com/batmac/pre-commit-zig rev: v0.3.0 hooks: - id: zig-build - repo: local hooks: - id: test name: Run zig build test entry: zig args: ["build", "coverage", "-Dcoverage-threshold=78"] language: system types: [file] pass_filenames: false