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

repos:
  - repo: https://github.com/cheshirekow/cmake-format-precommit
    rev: v0.6.13
    hooks:
      - id: cmake-format
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: cef0300fd0fc4d2a87a85fa2093c6b283ea36f4b # v5.0.0
    hooks:
      - id: trailing-whitespace
      - id: end-of-file-fixer
      - id: check-shebang-scripts-are-executable
      - id: check-yaml
      - id: check-added-large-files
      - id: file-contents-sorter
        files: .gitignore
  - repo: local
    hooks:
      - id: rat
        name: Release Audit Tool
        language: system
        entry: |
          bash -c " \
            git archive HEAD \
              --prefix=apache-arrow-java/ \
              --output=apache-arrow-java.tar.gz && \
              dev/release/run_rat.sh apache-arrow-java.tar.gz && \
              rm -f apache-arrow-java.tar.gz"
        always_run: true
        pass_filenames: false
  - repo: https://github.com/koalaman/shellcheck-precommit
    rev: v0.10.0
    hooks:
      - id: shellcheck
        args:
          - "--external-sources"
  - repo: https://github.com/scop/pre-commit-shfmt
    rev: v3.9.0-1
    hooks:
      - id: shfmt
        args:
          # The default args is "--write --simplify" but we don't use
          # "--simplify". Because it's conflicted will ShellCheck.
          - "--write"
