summaryrefslogtreecommitdiffstats
path: root/.pre-commit-config.yaml
blob: 9d4c45d80a131051a9b86f0c01c028466034375f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# This is the configuration file for the pre-commit framework, a simple way
# to manage, install and run git hooks to catch common problems early on.
# See https://pre-commit.com/ for details.
#
# This adds the following hooks:
#
# - check-case-conflict
# - check-byte-order-marker
# - check-yaml
# - check-json
# - check-xml
# - mixed-line-ending
# - end-of-file-fixer
# - trailing-whitespace
# - no-commit-to-branch
# - eslint
# - clang-format
# - qsscheck
#
# If you have Python >= 3.7 and python-pip installed, just run:
#
#     $ pip install --user pre-commit
#     $ git clone https://github.com/your-fork-of/mixxx.git
#     $ cd mixxx
#     $ pre-commit install
#     $ pre-commit install -t pre-push
#
# It will now run relevant hooks automatically on every `git commit` or
# `git push` in the mixxx git repository.
#
# If you have a problems with a particular hook, you can use the `$SKIP`
# environment variable to disable hooks:
#
#     $ SKIP=clang-format,end-of-file-fixer git commit
#
# This can also be used to separate logic changes and autoformatting into
# two subsequent commits.
#
# Using the `$SKIP` var is preferable to using `git commit --no-verify`
# because it won't prevent catching other, unrelated issues.

# _anlz.h/_pdb.h: Header files generated by Kaitai Struct
exclude: ^(lib/|src/test/.*data/).*|res/translations/.*\.ts|src/.*_(anlz|pdb)\.h$
default_language_version:
  python: python3
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
  rev: v3.3.0
  hooks:
  - id: fix-byte-order-marker
    exclude: ^.*(\.cbproj|\.groupproj|\.props|\.sln|\.vcxproj|\.vcxproj.filters)$
  - id: check-case-conflict
  - id: check-json
  - id: check-merge-conflict
  - id: check-xml
  - id: check-yaml
    exclude: ^\.clang-format$
  - id: end-of-file-fixer
    stages:
    - commit
    - manual
  - id: mixed-line-ending
  - id: trailing-whitespace
    exclude: \.(c|cc|cxx|cpp|frag|glsl|h|hpp|hxx|ih|ispc|ipp|java|js|m|mm|proto|vert)$
    stages:
    - commit
    - manual
  - id: no-commit-to-branch
- repo: https://github.com/codespell-project/codespell
  rev: v1.17.1
  hooks:
  - id: codespell
    # ignore-regex is substituted by ' '
    entry: tools/codespell.py --ignore-file .codespellignore --ignore-regex "\\W(?:m_p*(?=[A-Z])|m_(?=\\w)|pp*(?=[A-Z])|k(?=[A-Z])|s_(?=\\w))" --files
    exclude: ^(\.codespellignore|src/dialog/dlgabout\.cpp|.*\.(?:pot?|ts|wxl))$
- repo: https://github.com/pre-commit/mirrors-eslint
  rev: v7.12.1
  hooks:
  - id: eslint
    args: [--fix, --report-unused-disable-directives]
    stages:
    - commit
    - manual
- repo: local
  hooks:
  - id: clang-format
    name: clang-format
    description: "Run clang-format in two passes (reformat, then break long lines)"
    entry: tools/clang_format.py
    require_serial: true
    stages:
    - commit
    - manual
    language: python
    files: \.(c|cc|cxx|cpp|frag|glsl|h|hpp|hxx|ih|ispc|ipp|java|m|mm|proto|vert)$
- repo: https://github.com/psf/black
  rev: 20.8b1
  hooks:
  - id: black
    files: ^tools/.*$
- repo: https://gitlab.com/pycqa/flake8
  rev: '3.8.4'
  hooks:
  - id: flake8
    files: ^tools/.*$
    types: [text, python]
- repo: https://github.com/shellcheck-py/shellcheck-py
  rev: v0.7.1.1
  hooks:
  - id: shellcheck
- repo: local
  hooks:
  - id: qsscheck
    name: qsscheck
    description: Run qsscheck to detect broken QSS.
    entry: ./tools/qsscheck.py
    args: [.]
    pass_filenames: false
    language: python
    additional_dependencies:
    - tinycss==0.4
    types: [text]
    files: ^.*\.qss$
    stages:
    - commit
    - manual