# Don't complain when changing branches with different overcommit configurations.
verify_signatures: false

CommitMsg:
  ALL:
    enabled: false
  EmptyMessage:
    enabled: true

PreCommit:
  ALL:
    enabled: false
  RuboCop:
    enabled: true
    on_warn: fail
    command: ['bundle', 'exec', 'rubocop']
  CoffeeLint:
    required_executable: 'coffeelint'
    install_command: 'npm install -g @coffeelint/cli'
    # .dev/coffeelint/rules/* not supported in YAML, specify all rules separately.
    flags:
      [
        '--reporter=csv',
        '--rules',
        './.dev/coffeelint/rules/detect_translatable_string.coffee',
      ]
    enabled: true
    on_warn: fail
    exclude: 'public/assets/chat/**/*'
  Stylelint:
    enabled: true
    required_executable: 'pnpm'
    command: ['pnpm', '--silent', 'lint:css:cmd']
    include:
      - '**/*.scss'
      - '**/*.css'
      - '**/*.vue'
  TranslationCatalogCheck:
    required_executable: 'rails'
    enabled: true
    env:
      ZAMMAD_SAFE_MODE: '1'
    command: ['rails', 'generate', 'zammad:translation_catalog', '--check']
  SettingsTypesCheck:
    required_executable: 'rails'
    enabled: true
    env:
      ZAMMAD_SAFE_MODE: '1'
    command: ['rails', 'generate', 'zammad:setting_types', '--check']
    include:
      - 'db/seeds/settings.rb'
  GraphQLAPICheck:
    required_executable: '.gitlab/check_graphql_api_consistency.sh'
    enabled: true
    command: ['.gitlab/check_graphql_api_consistency.sh']
    include:
      - 'app/graphql/**/*'
      - 'app/frontend/**/*.graphql'
  TypeCheck:
    required_executable: 'pnpm'
    enabled: true
    command: ['pnpm', 'lint:ts']
    exclude:
     - 'node_modules'
     - 'public'
     - 'vendor'
    include:
      - 'app/frontend/**/*'
      - '**/*.cy.ts'
      - '**/cypress/**/*.ts'
      - './vite.config.*'
      - './vitest.setup.ts'
  EsLint:
    required_executable: 'pnpm'
    enabled: true
    command: ['pnpm', 'lint:js:cmd']
    exclude:
      - 'app/assets/**/*'
      - 'public/assets/chat/**/*'
      - 'public/assets/form/**/*'
    include:
      - '**/*.js'
      - '**/*.ts'
      - '**/*.vue'

PostCheckout:
  ALL:
    enabled: false

PostCommit:
  ALL:
    enabled: false

PostMerge:
  ALL:
    enabled: false

PostRewrite:
  ALL:
    enabled: false

PrePush:
  ALL:
    enabled: false
  CustomScript:
    enabled: true
    description: "Verify GraphQL introspection file is not empty."
    required_executable: 'bash'
    command: [ 'bash', '-c', 'test -s app/graphql/graphql_introspection.json' ]
    on_warn: fail

PreRebase:
  ALL:
    enabled: false

PrepareCommitMsg:
  ALL:
    enabled: false