---

# -----------------------------------------------------------------------
# [NOTE] - Propogate .pre-commit-config.yaml edits to all repositories!
# -----------------------------------------------------------------------
# [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 2024-04-10 v0.3
# -----------------------------------------------------------------------

# ci:
#   skip: [sync]

repos:
  # Sync from repo
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v4.5.0
    hooks:
      - id: trailing-whitespace
      - id: end-of-file-fixer
      - id: check-yaml
      - id: check-added-large-files

  - 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] REUSE License Checking
## -----------------------------------------------------------------------
# - repo: https://github.com/ansys/pre-commit-hooks
#   rev: v0.2.9
#   hooks:
#     - id: add-license-headers
#   args:
# - --custom_copyright=custom copyright phrase
# - --custom_template=template_name
# - --custom_license=license_name
# - --ignore_license_check
# - --start_year=2023

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

# -------------------------------------------------------------------
# https://docs.python.org/3/library/re.html#regular-expression-syntax
# -------------------------------------------------------------------
exclude: |
    (?x)^(
        ^jjb/.*             |
        ^makefiles/.*       |
        ^lf/.*              |
        ^.venv/.*           |
        ^jenkins-scripts/.* |
        ^lf-ansible/.*      |
        ^packer/.*          |
        ^test/.*            |
        ^jjb/pipeline/voltha/voltha-physical-soak-dt-tests.groovy
    )$

# [SEE ALSO]
# -----------------------------------------------------------------------

# [EOF]
