# Copyright (c) 2022 Arm Limited
# All rights reserved.
#
# The license below extends only to copyright in the software and shall
# not be construed as granting a license to any other intellectual
# property including but not limited to intellectual property relating
# to a hardware implementation of the functionality of the software
# licensed hereunder.  You may use the software subject to the license
# terms below provided that you ensure that this notice is replicated
# unmodified and in its entirety in all distributions of the software,
# modified or unmodified, in source code or in binary form.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met: redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer;
# redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution;
# neither the name of the copyright holders nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

minimum_pre_commit_version: "2.18"

default_language_version:
  python: python3

exclude: |
  (?x)^(
    ext/.*|
    build/.*|
    src/systemc/ext/.*|
    src/systemc/tests/.*/.*|
    src/python/m5/ext/pyfdt/.*|
    tests/.*/ref/.*
  )$

default_stages: [commit]

repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
  rev: v4.3.0
  hooks:
  - id: trailing-whitespace
  - id: end-of-file-fixer
  - id: check-json
  - id: check-yaml
  - id: check-added-large-files
  - id: mixed-line-ending
    args: [--fix=lf]
  - id: check-case-conflict
- repo: https://github.com/psf/black
  rev: 22.6.0
  hooks:
    - id: black
- repo: local
  hooks:
  - id: gem5-style-checker
    name: gem5 style checker
    entry: util/git-pre-commit.py
    always_run: true
    exclude: ".*"
    language: system
    description: 'The gem5 style checker hook.'
  - id: gem5-commit-msg-checker
    name: gem5 commit msg checker
    entry: ext/git-commit-msg
    language: system
    stages: [commit-msg]
    description: 'The gem5 commit message checker hook.'
  - id: gerrit-commit-msg-job
    name: gerrit commit message job
    entry: util/gerrit-commit-msg-hook
    language: system
    stages: [commit-msg]
    description: 'Adds Change-ID to the commit message. Needed by Gerrit.'
