repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
  rev: 3e8a8703264a2f4a69428a0aa4dcb512790b2c8c  # pragma: allowlist secret; frozen: v6.0.0
  hooks:
  - id: check-case-conflict
  - id: check-executables-have-shebangs
    files: \.sh
  - id: check-json
  - id: check-vcs-permalinks
  - id: check-yaml
    exclude: ^(helm)
  - id: check-ast
  - id: end-of-file-fixer
  - id: trailing-whitespace
  - id: mixed-line-ending
    args: [--fix=lf]
- repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks
  rev: 4380fbb73a154b5f5624794c1c78d9719ccc860f  # pragma: allowlist secret; frozen: v2.16.0
  hooks:
  - id: pretty-format-yaml
    exclude: ^helm
    args: [--autofix, --indent, '2']
- repo: https://github.com/Yelp/detect-secrets
  rev: 68e8b45440415753fff70a312ece8da92ba85b4a  # pragma: allowlist secret; frozen: v1.5.0
  hooks:
  - id: detect-secrets
    args: [--baseline, .secrets.baseline]
    exclude: |
      (?x)^(
          docker-compose/n8n/demo-data/ |
          docker-compose/sdg-mock-app/src/app/api/v1/mock-data\.json$ |
          pnpm-lock\.yaml$ |
          .*/pnpm-lock\.yaml$
      )
- repo: local
  hooks:
  - id: prettier
    name: prettier
    entry: .bin/prettier.sh
    language: script
    pass_filenames: true
    require_serial: true
    files: \.(ts|tsx|js|jsx|json|css|scss|md|html|yaml|yml)$
    exclude: .git/COMMIT_EDITMSG
  - id: eslint-external-hooks
    name: lint external-hooks
    entry: .bin/eslint-external-hooks.sh
    language: script
    pass_filenames: true
    require_serial: true
    types_or: [javascript, ts]
    files: ^external-hooks/
  - id: eslint-external-ui
    name: lint external-ui
    entry: .bin/eslint-external-ui.sh
    language: script
    pass_filenames: true
    require_serial: true
    types_or: [ts, tsx]
    files: ^external-ui/
  - id: python-format
    name: lint Python
    entry: black
    language: system
    types: [python]
  - id: commitlint
    name: commitlint
    entry: .bin/commitlint.sh
    language: script
    verbose: true
    pass_filenames: false
    stages: [commit-msg]

exclude: |
  (?x)^(
    CHANGELOG\.md |
    (.*/)?package-lock\.json |
    (.*/)?yarn\.lock |
    (.*/)?pnpm-lock\.yaml |
    docker-compose/n8n/demo-data/workflows/.* |
    docker-compose/sdg-mock-app/next-env\.d\.ts
  )$
