Setup pre-commit and include code formatting scripts
This patch
- includes our code formatting scripts used in our precommit pipeline
- sets up pre-commit framework to help contributors validate their patches
This has several benefits:
- our repository becomes more inclusive to external contributions
- we can use several hooks available online efficiently, w/o implementing our own
- it speeds up our development flow
and, it is completely optional.
The pre-commit configuration includes running the following:
- our code formatting scripts
- CMake and Bazel build file generation scripts
- hooks that check trailing whitespace, end of files, committed large files etc.
The number of checks can easily be extended using pre-commit framework.
Change-Id: I06bf1259715579d321f89820726a8301504c36d9
Signed-off-by: Gunes Bayir <gunes.bayir@arm.com>
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/10064
Reviewed-by: Jakub Sujak <jakub.sujak@arm.com>
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Benchmark: Arm Jenkins <bsgcomp@arm.com>
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index baf4582..c003d1c 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -1,53 +1,47 @@
fail_fast: false
-files: ^python/
+exclude: ^(data|include)/.*
+exclude: |
+ (?x)^(
+ data/.*|
+ include/.*|
+ src/CMakeLists.txt|
+ src/Bazel.build|
+ Android.bp
+ )$
+
repos:
- - repo: https://github.com/pre-commit/pre-commit-hooks
- rev: v4.0.1
+ - repo: local
hooks:
- - id: check-yaml
+ - id: format-code
+ name: ACL Format Code Script
stages: [commit]
- - id: check-json
+ language: python
+ entry: python ./scripts/format_code.py --files=git-diff
+ pass_filenames: false
+ additional_dependencies: ['psutil==5.8.0', 'Jinja2==3.0.1']
+ - id: prepare-cmake-build-files
+ name: Prepare CMake build files
stages: [commit]
+ language: python
+ entry: python ./scripts/generate_build_files.py --cmake
+ pass_filenames: false
+ - id: prepare-bazel-build-files
+ name: Prepare Bazel build files
+ stages: [commit]
+ language: python
+ entry: python ./scripts/generate_build_files.py --bazel
+ pass_filenames: false
+ - repo: https://github.com/pre-commit/pre-commit-hooks
+ rev: v4.4.0
+ hooks:
- id: end-of-file-fixer
stages: [commit]
- exclude: \.cp?p?$
- - id: requirements-txt-fixer
- stages: [commit]
- id: trailing-whitespace
stages: [commit]
- id: mixed-line-ending
args: ['--fix=lf']
description: Forces to replace line ending by the UNIX 'lf' character.
- - id: detect-private-key
- stages: [commit]
- - id: check-executables-have-shebangs
- stages: [commit]
- id: check-added-large-files
args: ['--maxkb=100']
stages: [commit]
- - repo: https://github.com/asottile/reorder_python_imports
- rev: v2.6.0
- hooks:
- - id: reorder-python-imports
- args: [--py3-plus]
- pass_filenames: true
- - repo: https://github.com/psf/black
- rev: 21.7b0
- hooks:
- - id: black
- - repo: https://github.com/asottile/blacken-docs
- rev: v1.8.0
- hooks:
- - id: blacken-docs
- additional_dependencies: [black==21.7b0]
- - repo: https://github.com/asottile/pyupgrade
- rev: v2.7.2
- hooks:
- - id: pyupgrade
- args: [--py36-plus]
- - repo: https://github.com/markdownlint/markdownlint
- rev: v0.9.0
- hooks:
- - id: markdownlint
- args: ["--style", ".mdl.rb"]