97 lines
2.4 KiB
YAML
97 lines
2.4 KiB
YAML
|
|
# Pre-commit hooks for TypeDialog project
|
||
|
|
# Install: pre-commit install
|
||
|
|
# Run manually: pre-commit run --all-files
|
||
|
|
|
||
|
|
repos:
|
||
|
|
# General file checks
|
||
|
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||
|
|
rev: v5.0.0
|
||
|
|
hooks:
|
||
|
|
- id: trailing-whitespace
|
||
|
|
exclude: '\.md$'
|
||
|
|
- id: end-of-file-fixer
|
||
|
|
- id: check-yaml
|
||
|
|
exclude: '.gitlab-ci.yml'
|
||
|
|
- id: check-toml
|
||
|
|
- id: check-json
|
||
|
|
- id: check-added-large-files
|
||
|
|
args: ['--maxkb=1024']
|
||
|
|
- id: check-merge-conflict
|
||
|
|
- id: mixed-line-ending
|
||
|
|
args: ['--fix=lf']
|
||
|
|
|
||
|
|
# Rust formatting
|
||
|
|
- repo: local
|
||
|
|
hooks:
|
||
|
|
- id: cargo-fmt
|
||
|
|
name: cargo fmt
|
||
|
|
entry: cargo fmt
|
||
|
|
language: system
|
||
|
|
types: [rust]
|
||
|
|
pass_filenames: false
|
||
|
|
args: ['--all', '--', '--check']
|
||
|
|
|
||
|
|
# Rust linting
|
||
|
|
- repo: local
|
||
|
|
hooks:
|
||
|
|
- id: cargo-clippy
|
||
|
|
name: cargo clippy
|
||
|
|
entry: cargo clippy
|
||
|
|
language: system
|
||
|
|
types: [rust]
|
||
|
|
pass_filenames: false
|
||
|
|
args: ['--all-targets', '--all-features', '--', '-D', 'warnings']
|
||
|
|
|
||
|
|
# Shell script linting
|
||
|
|
- repo: https://github.com/shellcheck-py/shellcheck-py
|
||
|
|
rev: v0.10.0.1
|
||
|
|
hooks:
|
||
|
|
- id: shellcheck
|
||
|
|
|
||
|
|
# Markdown syntax linting (docs/ only)
|
||
|
|
- repo: https://github.com/DavidAnson/markdownlint-cli2
|
||
|
|
rev: v0.16.0
|
||
|
|
hooks:
|
||
|
|
- id: markdownlint-cli2
|
||
|
|
name: markdownlint (syntax)
|
||
|
|
files: '^docs/.*\.md$'
|
||
|
|
args: ['--config', '.markdownlint-cli2.jsonc']
|
||
|
|
|
||
|
|
# Markdown prose linting with Vale (docs/ only)
|
||
|
|
- repo: local
|
||
|
|
hooks:
|
||
|
|
- id: vale
|
||
|
|
name: vale (prose quality)
|
||
|
|
entry: bash -c 'vale docs/ || exit 0'
|
||
|
|
language: system
|
||
|
|
files: '^docs/.*\.md$'
|
||
|
|
pass_filenames: false
|
||
|
|
|
||
|
|
# Nickel type checking
|
||
|
|
- repo: local
|
||
|
|
hooks:
|
||
|
|
- id: nickel-typecheck
|
||
|
|
name: nickel typecheck
|
||
|
|
entry: bash -c 'for f in "$@"; do nickel typecheck "$f" || exit 1; done' --
|
||
|
|
language: system
|
||
|
|
files: '\.ncl$'
|
||
|
|
|
||
|
|
# Nushell script validation
|
||
|
|
- repo: local
|
||
|
|
hooks:
|
||
|
|
- id: nushell-check
|
||
|
|
name: nushell check
|
||
|
|
entry: bash -c 'for f in "$@"; do nu --check "$f" || exit 1; done' --
|
||
|
|
language: system
|
||
|
|
files: '\.nu$'
|
||
|
|
|
||
|
|
# Security checks
|
||
|
|
- repo: local
|
||
|
|
hooks:
|
||
|
|
- id: cargo-audit
|
||
|
|
name: cargo audit
|
||
|
|
entry: cargo audit
|
||
|
|
language: system
|
||
|
|
pass_filenames: false
|
||
|
|
stages: [manual]
|