blob: 9910bbb82f26b71865d8e93bb4ba5575e3cb5dcb [file]
# Git has the notion of hooks, which are custom scripts that are run on
# specific events. One of these hooks is the pre-commit hook (located at
# .git/hooks/pre-commit), which is run when committing, before specifying a
# message.
#
# To ease management of the pre-commit hook, the pre-commit framework
# ( https://pre-commit.com ) was developed. This is the configuration file
# for that framework. It contains a list of hooks, with information on where
# to find them and on which files to run them.
#
# See here ( https://pre-commit.com/#install ) on how to install the
# pre-commit framework.
#
# To run all the hooks specified in this file manually, you can do:
# $ pre-commit run
#
# To run some hooks and skip others, you can use environment variable SKIP:
# $ SKIP=flake8,isort pre-commit run
#
# To install the pre-commit framework in the repository in order to run the
# hooks on every commit, do:
# $ pre-commit install
#
# After installing the pre-commit framework, you can skip running all
# pre-commit hooks using --no-verify, or some using SKIP.
# $ git commit --no-verify ...
# $ SKIP=flake8,isort git commit ...
#
# In case some of these hooks don't work for you, you can make the SKIP
# setting permanent by:
# - setting SKIP in your environment
# (this will affect all repositories where it is set)
# - setting SKIP in .git/hooks/pre-commit by adding "export SKIP=..."
# (this will affect only this repository, but it may have to be re-added
# if .git/hooks/pre-commit is regenerated)
#
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
minimum_pre_commit_version: 4.5.1
default_install_hook_types: [pre-commit, commit-msg]
default_stages: [pre-commit]
repos:
# Python hooks. Run these for (in glob notation):
#
# - gdb/gdb-gdb.py.in
# - gdb/*.py
# - gdb/python/**/*.py
# - gdb/testsuite/*.py
#
# Because gdb/gdb-gdb.py.in is not classified as python, we use
# 'types_or: [file]' to override the default type for these hooks.
#
- repo: https://github.com/psf/black-pre-commit-mirror
rev: 26.5.1
hooks:
- id: black
types_or: [file]
files: '^gdb/.*\.py(\.in)?$'
- repo: https://github.com/pycqa/flake8
rev: 7.3.0
hooks:
- id: flake8
types_or: [file]
files: '^gdb/.*\.py(\.in)?$'
args: [--config, gdb/setup.cfg]
- repo: https://github.com/pycqa/isort
rev: 9.0.0a3
hooks:
- id: isort
types_or: [file]
files: '^gdb/.*\.py(\.in)?$'
# Codespell hooks.
- repo: https://github.com/codespell-project/codespell
rev: v2.4.2
hooks:
- id: codespell
files: '^(gdb|gdbserver|gdbsupport)/'
args: [--toml, gdb/pyproject.toml]
- id: codespell
name: codespell-log
entry: gdb/contrib/codespell-log.sh
args: [--toml, gdb/pyproject.toml]
verbose: true
stages: [commit-msg]
# Tclint hooks.
- repo: https://github.com/nmoroze/tclint
rev: v0.8.0
hooks:
- id: tclint
args: [--trust-plugins]
files: '^gdb/testsuite/.*\.(exp|tcl)$'
# Local hooks.
- repo: local
hooks:
- id: &id0 check-include-guards
name: *id0
language: unsupported_script
entry: gdb/check-include-guards.py
# All gdb header files, but not headers in the test suite.
files: '^(gdb(support|server)?)/.*\.h$'
exclude: '.*/testsuite/.*'
- id: &id1 check-gnu-style
name: *id1
language: python
additional_dependencies: ['termcolor', 'unidiff']
entry: gdb/contrib/check-gnu-style-pre-commit.sh
files: '^(gdb(support|server)?)/.*\.(c|h|cc)$'
exclude: '.*/testsuite/.*'
verbose: true
- id: &id2 check-whitespace
name: *id2
language: unsupported_script
entry: gdb/contrib/check-whitespace-pre-commit.py
files: '^(gdb(support|server)?)/.*$'
types: ['text']
- id: &id3 pre-commit-setup
name: *id3
language: python
entry: gdb/contrib/pre-commit-setup.py
additional_dependencies: ["pyyaml"]
always_run: true
pass_filenames: false
- id: &id4 check-file-mode
name: *id4
language: unsupported_script
entry: gdb/contrib/check-file-mode.sh
files: '^(gdb|gdbserver|gdbsupport)/.*$'