# 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.
---
default_stages: [commit, push]
default_language_version:
  # force all unspecified python hooks to run python3
  python: python3
repos:
  - repo: local
    hooks:
      - id: build
        name: Check if image build is needed
        entry: ./scripts/ci/ci_build.sh
        language: system
        always_run: true
        pass_filenames: false
      - id: check-apache-license
        name: Check if licences are OK for Apache
        entry: ./scripts/ci/ci_check_license.sh
        language: system
        files: ^\.pre-commit-config\.yaml$
        pass_filenames: true
  - repo: https://github.com/potiuk/pre-commit-hooks
    rev: d5bee8590ea3405a299825e68dbfa0e1b951a2be
    hooks:
      - id: forbid-tabs
        exclude: ^airflow/_vendor/.*$|^docs/Makefile$
      - id: insert-license
        name: Add licence for all SQL files
        files: \.sql$
        exclude: ^\.github/.*$|^airflow/_vendor/.*$
        args:
          - --comment-style
          - "/*||*/"
          - --license-filepath
          - license-templates/LICENSE.txt
          - --fuzzy-match-generates-todo
      - id: insert-license
        name: Add licence for all other files
        exclude: ^\.github/.*$"|^airflow/_vendor/.*$
        args:
          - --comment-style
          - "|#|"
          - --license-filepath
          - license-templates/LICENSE.txt
          - --fuzzy-match-generates-todo
        files: >
          \.properties$|\.cfg$|\.conf$|\.ini$|\.ldif$|\.readthedocs$|\.service$|^Dockerfile.*$
      - id: insert-license
        name: Add licence for all rst files
        exclude: ^\.github/.*$"|^airflow/_vendor/.*$
        args:
          - --comment-style
          - "||"
          - --license-filepath
          - license-templates/LICENSE.rst
          - --fuzzy-match-generates-todo
        files: \.rst$
      - id: insert-license
        name: Add licence for all JS files
        files: \.js$
        exclude: ^\.github/.*$|^airflow/_vendor/.*$|^airflow/www/static/.*$
        args:
          - --comment-style
          - "/**| *| */"
          - --license-filepath
          - license-templates/LICENSE.txt
          - --fuzzy-match-generates-todo
      - id: insert-license
        name: Add licence for all JINJA template files
        files: ^airflow/www/templates/.*\.html$|^docs/templates/.*\.html$|^airflow/contrib/plugins/metastore_browser/templates/.*\.html$ # yamllint disable-line rule:line-length
        exclude: ^\.github/.*$|^airflow/_vendor/.*$
        args:
          - --comment-style
          - "{#||#}"
          - --license-filepath
          - license-templates/LICENSE.txt
          - --fuzzy-match-generates-todo
      - id: insert-license
        name: Add licence for shell files
        exclude: ^\.github/.*$"|^airflow/_vendor/.*$
        types: [shell]
        files: ^breeze$|^breeze-complete$
        args:
          - --comment-style
          - "|#|"
          - --license-filepath
          - license-templates/LICENSE.txt
          - --fuzzy-match-generates-todo
      - id: insert-license
        name: Add licence for all XML files
        exclude: ^\.github/.*$"|^airflow/_vendor/.*$
        types: [xml]
        args:
          - --comment-style
          - "<!--||-->"
          - --license-filepath
          - license-templates/LICENSE.txt
          - --fuzzy-match-generates-todo
      - id: insert-license
        name: Add licence for yaml files
        exclude: ^\.github/.*$"|^airflow/_vendor/.*$
        types: [yaml]
        args:
          - --comment-style
          - "|#|"
          - --license-filepath
          - license-templates/LICENSE.txt
          - --fuzzy-match-generates-todo
      - id: insert-license
        name: Add licence for all md files
        files: \.md$
        exclude: ^\.github/.*$|^airflow/_vendor/.*$
        args:
          - --comment-style
          - "<!--|| -->"
          - --license-filepath
          - license-templates/LICENSE.txt
          - --fuzzy-match-generates-todo
  - repo: https://github.com/thlorenz/doctoc.git
    rev: v1.4.0
    hooks:
      - id: doctoc
        name: Add TOC for md files
        files: ^README\.md$|^CONTRIBUTING\.md$|^UPDATING.md$|^dev/README.md$
        args:
          - "--maxlevel"
          - "2"
  - repo: meta
    hooks:
      - id: check-hooks-apply
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v2.3.0
    hooks:
      - id: check-merge-conflict
      - id: detect-private-key
      - id: end-of-file-fixer
      - id: mixed-line-ending
      - id: check-executables-have-shebangs
      - id: check-xml
  - repo: local
    hooks:
      - id: yamllint
        name: Check yaml files with yamllint
        entry: yamllint -c yamllint-config.yml
        language: python
        types: [yaml]
        exclude: ^.*init_git_sync\.template\.yaml$|^.*airflow\.template\.yaml$
      - id: shellcheck
        name: Check Shell scripts syntax correctness
        language: docker_image
        entry: koalaman/shellcheck:stable -x -a
        types: [shell]
        files: ^breeze$|^breeze-complete$
      - id: lint-dockerfile
        name: Lint dockerfile
        language: system
        entry: ./scripts/ci/ci_lint_dockerfile.sh
        files: ^Dockerfile.*$
      - id: mypy
        name: Run mypy
        language: system
        entry: ./scripts/ci/ci_mypy.sh
        files: \.py$
      - id: flake8
        name: Run flake8
        language: system
        entry: ./scripts/ci/ci_flake8.sh
        files: \.py$
