# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

# Pre-commit hook
# See documentation at: https://pre-commit.com/
#
# Pre-commit hook to run the sanity checks from Jenkins locally.
#
# Requirements:
#   - How to configure:
#        - $ pip install pre-commit
#        - $ pre-commit install --hook-type pre-push
#   - How to prevent running it:
#        - git options: --no-verify or -n
#        - $ git commit -n -m "YOUR COMMIT MESSAGE"
#   - How to run it as standalone
#        - $ pre-commit run
#

default_language_version:
    python: python3.6
fail_fast: True
default_stages: [push]
repos:
    - repo: https://github.com/pre-commit/pre-commit-hooks
      rev: v2.3.0
      hooks:
        - id: check-added-large-files
        - id: check-merge-conflict
        - id: check-yaml
        - id: end-of-file-fixer
          stages: [push]
        - id: trailing-whitespace
          stages: [push]
    - repo: local
      hooks:
        -   id: run-black
            name: Running Black...
            entry: docker/lint.sh python_format
            language: system
            always_run: true
            pass_filenames: false
        -   id: run-file-checks
            name: Checking File Types....
            entry: docker/lint.sh file_type
            language: system
            always_run: true
            pass_filenames: false
        -   id: run-headers-check
            name: Checking ASF License Headers ...
            entry: docker/lint.sh asf
            language: system
            always_run: true
            pass_filenames: false
        -   id: run-headers-check
            name: Linting the C++ code ...
            entry: docker/lint.sh cpplint
            language: system
            always_run: true
            pass_filenames: false
        -   id: run-clang-format
            name: Checking Clang format ...
            entry: docker/lint.sh clang_format
            language: system
            always_run: true
            pass_filenames: false
        -   id: run-mypy
            name: Type Checking with MyPY ...
            entry: docker/lint.sh mypy
            language: system
            always_run: true
            pass_filenames: false
