# Copyright (c) 2023 Arm Limited.
#
# SPDX-License-Identifier: MIT
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to
# deal in the Software without restriction, including without limitation the
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
fail_fast: false

exclude: |
    (?x)^(
        data/.*|
        include/.*|
        src/CMakeLists.txt|
        src/Bazel.build|
        Android.bp|
        src/core/NEON/kernels/convolution/.*|
        src/core/NEON/kernels/arm_gemm/.*|
        src/core/NEON/kernels/arm_conv/.*|
        compute_kernel_writer/validation/.*
    )$

repos:
  - repo: local
    hooks:
      - id: format-code
        name: ACL Format Code Script
        stages: [commit]
        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
      - id: fix-header-guards-ckw
        name: Fix header guards in CKW
        stages: [commit]
        language: python
        entry: python ./scripts/check_header_guards.py --extensions=h,hh,hpp,inl --comment_style=double_slash --prefix=CKW --include=compute_kernel_writer/ --add_extension --drop_outermost_subdir
        pass_filenames: true
      - id: fix-header-guards-acl
        name: Fix header guards in ACL
        stages: [commit]
        language: python
        entry: python ./scripts/check_header_guards.py --extensions=h,hh,hpp,inl --comment_style=double_slash --prefix=ACL --exclude=compute_kernel_writer/,src/core/NEON/kernels/convolution/,src/core/NEON/kernels/arm_gemm/,src/core/NEON/kernels/arm_conv/,include/ --add_extension
        pass_filenames: true
  - repo: https://github.com/pre-commit/mirrors-clang-format
    rev: v14.0.6
    hooks:
      - id: clang-format
        files: .*\.(cpp|h|hpp|hh|cc|inl|c)$
        exclude: |
            (?x)^(
              tests/.*
            )$
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v4.4.0
    hooks:
      - id: end-of-file-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: check-added-large-files
        args: ['--maxkb=100']
        stages: [commit]
