repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v4.6.0
    hooks:
      - id: check-added-large-files
        args: ['--maxkb=500']
      - id: check-merge-conflict
      - id: check-case-conflict
      - id: detect-private-key
      - id: end-of-file-fixer
      - id: trailing-whitespace

  - repo: https://github.com/guettli/sync-branch
    rev: v0.0.11
    hooks:
      - id: sync-branch

  - repo: local
    hooks:
      - id: check-no-binary
        name: check for binary files (build artifacts, databases)
        language: system
        entry: bash -c 'cd "$(git rev-parse --show-toplevel)" && scripts/check_no_binary.sh'
        pass_filenames: false
        always_run: true
      - id: forbidden-files-hook
        name: check for forbidden home-directory files
        language: system
        entry: bash -c 'cd "$(git rev-parse --show-toplevel)" && task check-hygiene'
        pass_filenames: false
        always_run: true
      - id: dart-check
        name: dart format (autofix) + check-fast (parallel)
        language: system
        entry: bash -c 'cd "$(git rev-parse --show-toplevel)" && dagger call --progress=plain -q -m ci --source=. check-fast'
        pass_filenames: false
        always_run: true
      - id: ci-no-direct-dagger
        name: check for direct dagger calls in workflows (use Task instead)
        language: system
        entry: "bash -c 'git --no-pager grep \"dagger call\" .forgejo/workflows/ && echo \"ERROR: Direct dagger calls found in workflows. Use Taskfile instead.\" && exit 1 || exit 0'"
        pass_filenames: false
        always_run: true
      - id: dagger-progress-plain
        name: ensure all dagger calls use --progress=plain
        language: system
        entry: "bash -c 'git --no-pager grep \"dagger call\" -- \":!.pre-commit-config.yaml\" | grep -v \"\\-\\-progress=plain\" && echo \"ERROR: All dagger calls must include --progress=plain\" && exit 1 || exit 0'"
        pass_filenames: false
        always_run: true
      - id: ci-image-exists
        name: verify container images in ci/main.go are reachable
        language: system
        entry: bash -c 'cd "$(git rev-parse --show-toplevel)" && task check-ci-images'
        pass_filenames: false
        files: ^(ci/main\.go|\.fvmrc)$
      - id: dagger-versions-aligned
        name: verify Dagger version is consistent across dagger.json, Dockerfile and DAGGER.md
        language: system
        entry: bash -c 'cd "$(git rev-parse --show-toplevel)" && scripts/check_dagger_versions.sh'
        pass_filenames: false
        files: ^(ci/dagger\.json|\.forgejo/Dockerfile|DAGGER\.md)$
