# 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.

# To use this, install the python package `pre-commit` and
# run once `pre-commit install`. This will setup a git pre-commit-hook
# that is executed on each commit and will report the linting problems.
# To run all hooks on all files use `pre-commit run -a`

repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v2.3.0
    hooks:
    - id: check-xml
    - id: check-yaml
      exclude: ci/conda/meta.yaml
    - id: end-of-file-fixer
    - id: trailing-whitespace
  - repo: https://github.com/pocc/pre-commit-hooks
    rev: v1.3.5
    hooks:
      - id: clang-format
        args: [-i]
        types_or: [c, c++]
  - repo: https://github.com/cheshirekow/cmake-format-precommit
    rev: v0.6.13
    hooks:
    - id: cmake-format
      args: [--in-place]
  - repo: https://github.com/cpplint/cpplint
    rev: 1.6.0
    hooks:
    - id: cpplint
      args:
        # From Arrow's config
        - "--filter=-whitespace/comments,-readability/casting,-readability/todo,-readability/alt_tokens,-build/header_guard,-build/c++11,-build/include_order,-build/include_subdir"
        - "--linelength=90"
        - "--verbose=2"
  - repo: https://github.com/golangci/golangci-lint
    rev: v1.49.0
    hooks:
    - id: golangci-lint
      entry: bash -c 'cd go/adbc && golangci-lint run --fix --timeout 5m'
      types_or: [go]
  - repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks
    rev: v2.3.0
    hooks:
    - id: pretty-format-golang
    - id: pretty-format-java
      args: [--autofix]
      types_or: [java]
  - repo: https://github.com/psf/black
    rev: 22.3.0
    hooks:
    - id: black
      types_or: [python]
  - repo: https://github.com/PyCQA/flake8
    rev: 4.0.1
    hooks:
    - id: flake8
      types_or: [python]
  - repo: https://github.com/PyCQA/isort
    rev: 5.12.0
    hooks:
    - id: isort
      types_or: [python]
  - repo: local
    hooks:
    - id: apache-rat
      name: Check for unapproved licenses
      language: script
      pass_filenames: false
      entry: "./ci/scripts/run_rat_local.sh"

exclude: "^c/vendor/.*"
