---

# -----------------------------------------------------------------------
# [NOTE] - Propogate .pre-commit-config.yaml edits to all repositories!
# -----------------------------------------------------------------------
# [NOTE] - Common config file source lives in repo:onf-make
#    - https://gerrit.opencord.org/plugins/gitiles/
#            onf-make/+/refs/heads/master/.pre-commit-config.yaml
# -----------------------------------------------------------------------
# [TODO]
#    - pre-commit yaml config exists individually within repositories.
#    - Generally lint config and benavior is consistent for all repos.
#    - Exclusions and bulk cleanup necessitate per-repo custom configs.
#    - Dynamically generate this config file from common and custom
# -----------------------------------------------------------------------

# -----------------------------------------------------------------------
# Copyright 2024 Open Networking Foundation Contributors
#
# Licensed 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.
# -----------------------------------------------------------------------
# SPDX-FileCopyrightText: 2024 Open Networking Foundation Contributors
# SPDX-License-Identifier: Apache-2.0
# -----------------------------------------------------------------------
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
# -----------------------------------------------------------------------
# .pre-commit-config-yaml v0.7 (2024-06-13)
# -----------------------------------------------------------------------

# ci:
#  autofix_commit_msg: "Chore: pre-commit autoupdate"
##  skip: [sync]
#  skip:
#    # pre-commit.ci does not have actionlint installed
#    - actionlint
#
# exclude: '^docs/conf.py'

repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v4.5.0
    hooks:
      - id: trailing-whitespace
      - id: check-added-large-files
      - id: check-ast
      - id: check-json
      - id: check-merge-conflict
      - id: check-xml
      - id: check-yaml
      # - id: debug-statements
      - id: end-of-file-fixer
      - id: fix-encoding-pragma
      # - id: double-quote-string-fixer
      - id: requirements-txt-fixer
      - id: mixed-line-ending
        args: ['--fix=lf']

  - repo: https://github.com/jorisroovers/gitlint
    rev: acc9d9de6369b76d22cb4167029d2035e8730b98  # frozen: v0.19.1
    hooks:
      - id: gitlint

  - repo: https://github.com/koalaman/shellcheck-precommit
    rev: v0.10.0
    hooks:
      - id: shellcheck

  - repo: https://github.com/adrienverge/yamllint.git
    rev: v1.35.1
    hooks:
      - id: yamllint

  ## -----------------------------------------------------------------------
  ## [SOURCE] Documentation
  ## -----------------------------------------------------------------------
  - repo: https://github.com/rstcheck/rstcheck
    rev: v6.2.1
    hooks:
      - id: rstcheck

  - repo: https://github.com/markdownlint/markdownlint
    rev: v0.13.0
    hooks:
      - id: markdownlint
      # - id: markdownlint_docker

  ## -----------------------------------------------------------------------
  ## [SOURCE] Docker
  ## -----------------------------------------------------------------------
  - repo: https://github.com/hadolint/hadolint
    rev: v2.12.0
    hooks:
      # - id: hadolint       # local tool install
      - id: hadolint-docker

  ## -----------------------------------------------------------------------
  ## [SOURCE] Golang
  ## -----------------------------------------------------------------------
  - repo: https://github.com/golangci/golangci-lint
    rev: v1.41.1
    hooks:
      - id: golangci-lint

  ## -----------------------------------------------------------------------
  ## [SOURCE] REUSE License Checking
  ## -----------------------------------------------------------------------
  ## tox -e [style,py,py-coverage,doc]
  ## -----------------------------------------------------------------------
  - repo: https://github.com/fsfe/reuse-tool
    rev: v3.0.2
    hooks:
      - id: reuse

  - repo: https://github.com/ansys/pre-commit-hooks
    rev: v0.2.9
    hooks:
      - id: add-license-headers
    args:
      - --custom_copyright=Open Networking Foundation Contributors
      - --custom_template=open_networking_foundation
      - --custom_license=Apache-2.0
      # - --ignore_license_check
      - --start_year=2019

  ## -----------------------------------------------------------------------
  ## [SOURCE] Python
  ## -----------------------------------------------------------------------
  - repo: https://github.com/psf/black
    rev: 22.10.0
    hooks:
      - id: black

# - repo: https://github.com/PyCQA/doc8
  # rev: v1.1.1
  # hooks:
  # - id: doc8

  ## -----------------------------------------------------------------------
  ## [SOURCE] Spelling
  ## -----------------------------------------------------------------------
  - repo: https://github.com/codespell-project/codespell
    rev: v2.2.4
    hooks:
      - id: codespell

  ## -----------------------------------------------------------------------
  ## [SOURCE] Testing
  ## -----------------------------------------------------------------------
  - repo: https://github.com/MarketSquare/robotframework-tidy
    rev: 4.11.0
    hooks:
      - id: robotidy

# -------------------------------------------------------------------
# https://docs.python.org/3/library/re.html#regular-expression-syntax
# https://pre-commit.com/#top_level-exclude
# -------------------------------------------------------------------
# [TODO] add file patterns per-repository:
#   .gitignore: *~ *\#*
# -------------------------------------------------------------------
# [TODO]
#   o Remove vendor/ post copyright cleanup
#   o https://pre-commit.com/#filtering-files-with-types
# -------------------------------------------------------------------
exclude: |
    (?x)^(
        ^VERSION                      |
        ^makefiles/.*                 |
        ^lf/.*                        |
        ^.venv/.*                     |
        ^.vendor/.*                   |
        ^______FIX_BELOW_______       |
        ^vendor/                      |
        ^ignore-end-of-exclude-marker
    )$

# [SEE ALSO]
# -----------------------------------------------------------------------
# https://github.com/memfault/interrupt/blob/master/example/pre-commit/.pre-commit-config.yaml
# https://pre-commit.com/hooks.html
# https://github.com/floatingpurr/sync_with_poetry/blob/main/.pre-commit-config.yaml
# https://github.com/the-common/pre-commit-config-template/blob/master/.pre-commit-config.yaml
# https://github.com/memfault/interrupt/blob/master/example/pre-commit/.pre-commit-config.yaml
# -----------------------------------------------------------------------
# https://www.hatica.io/blog/pre-commit-git-hooks/
# -----------------------------------------------------------------------

# [EOF]
