Files
mruby-mruby/.pre-commit-config.yaml
T
John Bampton 95b74eefdf pre-commit: add hook to ensure Makefiles are indented with tabs
Manual hook added which runs a shell script.

Can be run locally manually by Linux or Mac users and we have this also running on the GitHub Actions CI.

Will fail if Makefiles uses spaces for indentation.

Can run the manual hooks with:

`pre-commit run check-makefile-indentation --all-files --hook-stage manual`
2025-12-30 03:30:04 +10:00

152 lines
5.1 KiB
YAML

---
# https://pre-commit.com/
default_stages: [pre-commit, pre-push]
default_language_version:
python: python3
node: 24.11.1
minimum_pre_commit_version: "3.2.0"
exclude: "^tools/lrama/"
repos:
- repo: meta
hooks:
- id: identity
name: run identity
description: check your identity
- id: check-hooks-apply
name: run check-hooks-apply
description: check hooks apply to the repository
- repo: local
hooks:
- id: prettier
name: run prettier
description: format files with prettier
entry: prettier --write '**/*.json' '**/*.md' '**/*.yaml' '**/*.yml'
files: \.(json|md|ya?ml)$
language: node
additional_dependencies: ["prettier@3.7.4"]
stages: [manual]
- id: check-makefile-indentation
name: check Makefiles are indented with tabs
description: ensures that Makefiles are indented with tabs
entry: ./scripts/check_makefiles_for_tabs.sh
language: system
files: "(?i)^makefile$"
pass_filenames: true # <-- Crucial change: pass filenames to the script
types: [file] # Ensure only regular files are passed, not directories
stages: [manual]
- id: check-zip-file-is-not-committed
name: disallow zip files
description: Zip files are not allowed in the repository
language: fail
entry: |
Zip files are not allowed in the repository as they are hard to
track and have security implications. Please remove the zip file from the repository.
files: \.zip$
- repo: https://github.com/gitleaks/gitleaks
rev: v8.30.0
hooks:
- id: gitleaks
name: run gitleaks
description: detect hardcoded secrets with gitleaks
- repo: https://github.com/oxipng/oxipng
rev: v10.0.0
hooks:
- id: oxipng
name: run oxipng
description: use lossless compression to optimize PNG files
args: ["--fix", "-o", "4", "--strip", "safe", "--alpha"]
stages: [manual]
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v6.0.0
hooks:
- id: check-added-large-files
- id: check-case-conflict
- id: check-executables-have-shebangs
exclude: ^test/t/lang\.rb$
- id: check-illegal-windows-names
- id: pretty-format-json
args: [--autofix, --no-sort-keys]
- id: check-json
- id: check-merge-conflict
- id: check-shebang-scripts-are-executable
- id: check-vcs-permalinks
- id: check-yaml
- id: destroyed-symlinks
- id: detect-aws-credentials
args: [--allow-missing-credentials]
- id: detect-private-key
- id: end-of-file-fixer
- id: file-contents-sorter
args: [--unique]
files: ^\.github/linters/codespell\.txt$
- id: fix-byte-order-marker
- id: forbid-submodules
- id: mixed-line-ending
- id: trailing-whitespace
- repo: https://github.com/Lucas-C/pre-commit-hooks
rev: v1.5.5
hooks:
- id: forbid-tabs
name: run no-tabs checker
description: check the codebase for tabs
exclude: Makefile$
- id: remove-tabs
name: run tabs remover
description: find and convert tabs to spaces
args: [--whitespaces-count, "2"]
exclude: Makefile$
- repo: https://github.com/rhysd/actionlint
rev: v1.7.9
hooks:
- id: actionlint
name: run actionlint
description: lint GitHub Actions workflow files
- repo: https://github.com/codespell-project/codespell
rev: v2.4.1
hooks:
- id: codespell
name: run codespell
description: check spelling with codespell
- repo: https://github.com/igorshubovych/markdownlint-cli
rev: v0.46.0
hooks:
- id: markdownlint
name: run markdownlint
description: checks the style of Markdown files
args: [--config=.github/linters/.markdown-lint.yml]
types: [markdown]
files: \.md$
- repo: https://github.com/tcort/markdown-link-check
rev: v3.14.2
hooks:
- id: markdown-link-check
name: run markdown-link-check
description: checks hyperlinks in Markdown files
args: [--config=.github/linters/mlc_config.json, -q]
stages: [manual]
types: [markdown]
files: \.md$
- repo: https://github.com/rubocop/rubocop
rev: v1.81.7
hooks:
- id: rubocop
name: run rubocop
description: RuboCop is a Ruby code style checker (linter) and formatter based on the community-driven Ruby Style Guide
exclude: ^test/t/syntax\.rb$
args: [--config=.github/linters/.rubocop.yml]
- repo: https://github.com/shellcheck-py/shellcheck-py
rev: v0.11.0.1
hooks:
- id: shellcheck
name: run shellcheck
description: check shell scripts with a static analysis tool
- repo: https://github.com/adrienverge/yamllint
rev: v1.37.1
hooks:
- id: yamllint
name: run yamllint
description: check YAML files with yamllint
args: [--strict, -c=.github/linters/.yaml-lint.yml]
types: [yaml]
files: \.ya?ml$