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

---
minimum_pre_commit_version: 2.16.0
exclude: >
  (?x)^(
      .+/.venv/.+|.+/dist/.+|.+/.autovenv|.+/docs/|.github
  )$
fail_fast: true
default_language_version:
  python: python3
default_stages:
  - prepare-commit-msg
  - commit
  # - push

repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v4.0.1
    hooks:
      - id: check-case-conflict
      - id: check-merge-conflict
        stages:
          - commit
      - id: check-added-large-files
        args: [--maxkb=1000]
        stages:
          - commit
      - id: detect-aws-credentials
        args:
          - --allow-missing-credentials
      - id: fix-encoding-pragma
        args:
          - --remove
      - id: detect-private-key
      - id: destroyed-symlinks
      - id: mixed-line-ending
      - id: trailing-whitespace
      - id: check-toml
      # To match test*.py instead
      # - id: name-tests-test
      #   args: [--django]
      #   exclude: |
      #     - tests/test_licenses
      - id: end-of-file-fixer
        description: Ensures that a file is either empty, or ends with one newline.
        exclude_types: [sql]
        # types: [text]
      - id: pretty-format-json
        args:
          - --autofix
          - --no-sort-keys
          - --indent
          - '2'
        # files:
        pass_filenames: true

  - repo: https://github.com/Lucas-C/pre-commit-hooks
    rev: v1.1.10
    hooks:
      - id: insert-license
        name: Add license for all md files
        files: \.md$
        exclude: ^\.github/.*$
        args:
          - --comment-style
          - <!--|| -->
          - --license-filepath
          - dev/LICENSE.txt
          - --fuzzy-match-generates-todo
      - id: insert-license
        name: Add license for all SQL files
        files: \.sql$
        exclude: ^\.github/.*$|^airflow/_vendor/
        args:
          - --comment-style
          - /*||*/
          - --license-filepath
          - dev/LICENSE.txt
          - --fuzzy-match-generates-todo
      - id: insert-license
        name: Add license for all other files
        exclude: ^\.github/.*$|^airflow/_vendor/
        args:
          - --comment-style
          - '|#|'
          - --license-filepath
          - dev/LICENSE.txt
          - --fuzzy-match-generates-todo
        files: >
          \.properties$|\.cfg$|\.conf$|\.ini$|\.ldif$|\.readthedocs$|\.service$|\.tf$|Dockerfile.*$
      - id: insert-license
        name: Add license for all JINJA template files
        files: ^airflow/www/templates/.*\.html$|^docs/templates/.*\.html$.*\.jinja2
        exclude: ^\.github/.*$^airflow/_vendor/
        args:
          - --comment-style
          - '{#||#}'
          - --license-filepath
          - dev/LICENSE.txt
          - --fuzzy-match-generates-todo
      - id: insert-license
        name: Add license for all shell files
        exclude: ^\.github/.*$|^airflow/_vendor/
        files: ^breeze$|^breeze-complete$|\.sh$|\.bash$|\.bats$
        args:
          - --comment-style
          - '|#|'
          - --license-filepath
          - dev/LICENSE.txt
          - --fuzzy-match-generates-todo
      - id: insert-license
        name: Add license for all Python files
        exclude: ^\.github/.*$|^airflow/_vendor/
        types: [python]
        args:
          - --comment-style
          - '|#|'
          - --license-filepath
          - dev/LICENSE.txt
          - --fuzzy-match-generates-todo
      - id: insert-license
        name: Add license for all YAML files
        exclude: ^\.github/.*$|^airflow/_vendor/
        types: [yaml]
        files: \.yml$|\.yaml$
        args:
          - --comment-style
          - '|#|'
          - --license-filepath
          - dev/LICENSE.txt
          - --fuzzy-match-generates-todo

  # Python: Black formatter
  - repo: https://github.com/psf/black
    rev: 21.12b0
    hooks:
      - id: black
        args: [--safe, --quiet, --config=./pyproject.toml]
        files: \.pyi?$
        exclude: .github/
        # override until resolved: https://github.com/psf/black/issues/402
        types: []

  # - repo: https://github.com/jumanjihouse/pre-commit-hook-yamlfmt
  #   rev: 0.1.0
  #   hooks:
  #     - id: yamlfmt
  #       args: [--mapping, '2', --sequence, '4', --offset, '2']

  # Yaml: lint
  - repo: https://github.com/adrienverge/yamllint
    rev: v1.26.3
    hooks:
      - id: yamllint
        name: Check YAML files with yamllint
        entry: yamllint -c yamllint-config.yml # --strict
        types: [yaml]

  # Python - isort to sort imports in Python files
  - repo: https://github.com/timothycrosley/isort
    rev: 5.10.1
    hooks:
      - id: isort
        name: Run isort to sort imports in Python files
        args: [--profile, black]
        files: \.py$
        # To keep consistent with the global isort skip config defined in setup.cfg
        exclude: ^build/.*$|^.tox/.*$|^venv/.*$

  # PyUpgrade - 3.6
  - repo: https://github.com/asottile/pyupgrade
    rev: v2.29.1
    hooks:
      - id: pyupgrade
        args: [--py36-plus]
        exclude: ^scripts/|^docs

  - repo: https://github.com/asottile/blacken-docs
    rev: v1.12.0
    hooks:
      - id: blacken-docs
        alias: black
        additional_dependencies: [black==21.9b0]

  # - repo: https://github.com/PyCQA/bandit
  #   rev: 1.7.1
  #   hooks:
  #     - id: bandit
  #       args: [-ll, -r, liminal]
  #       files: .py$
  #       exclude: tests/test_licenses.py|^tests/runners
