---
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
#
# Run the following command to set up the pre-commit git hook scripts:
# $ pre-commit install
repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v4.6.0
    hooks:
      - id: check-added-large-files
      - id: check-case-conflict
      - id: check-symlinks
      - id: destroyed-symlinks

      - id: check-json
      - id: check-yaml
      - id: check-xml

      - id: check-merge-conflict
      - id: end-of-file-fixer
        exclude: dune.inc
      - id: mixed-line-ending
        exclude: dune.inc
      - id: trailing-whitespace
        exclude: dune.inc

  - repo: https://github.com/savonet/pre-commit-liquidsoap
    rev: 056cf2da9d985e1915a069679f126a461206504a
    hooks:
      - id: liquidsoap-prettier

  - repo: https://github.com/pre-commit/mirrors-prettier
    rev: v4.0.0-alpha.8
    hooks:
      - id: prettier
        files: \.(md|yml|yaml|json)$

  - repo: https://github.com/codespell-project/codespell
    rev: v2.3.0
    hooks:
      - id: codespell
        args: [-w, --ignore-words=.codespellignore]
        exclude: ^(doc/orig/fosdem2020|tests/language/cue_test.liq)

  - repo: local
    hooks:
      - id: shfmt
        name: shfmt
        language: docker_image
        entry: mvdan/shfmt -i 2 -ci -sr -kp -w
        types: [shell]

      - id: shellcheck
        name: shellcheck
        language: docker_image
        entry: koalaman/shellcheck --color=always
        types: [shell]

      - id: dunefmt
        name: dunefmt
        language: system
        entry: opam exec dune -- build @fmt --auto-promote
        files: \.(ml|mli|dune|dune-project)$
        pass_filenames: false

      - id: dunegen
        name: dunegen
        language: system
        entry: opam exec dune -- build @gendune --auto-promote
        pass_filenames: false
        always_run: true
