linters-settings:
  gofmt:
    simplify: true
    rewrite-rules:
      - pattern: interface{}
        replacement: any
  misspell:
    locale: US
  gofumpt:
    extra-rules: true
  forbidigo:
    forbid:
      - context\.WithCancel$
      - ^print.*$
      - panic
      - ^log.Fatal().*$
  errorlint:
    errorf-multi: true

linters:
  disable-all: true
  enable:
    - bidichk
    - errcheck
    - gofmt
    - goimports
    - gosimple
    - govet
    - ineffassign
    - misspell
    - revive
    - staticcheck
    - typecheck
    - unused
    - whitespace
    - gofumpt
    - errorlint
    - forbidigo
    - zerologlint

run:
  timeout: 5m

issues:
  exclude-rules:
    # gin force us to use string as context key
    - path: server/store/context.go
      linters:
        - staticcheck
        - revive

    # let cli use print and panic and log.Fatal()
    - path: 'cmd/*|cli/*'
      linters:
        - forbidigo
    # allow some setup functions to use log.Fatal()
    - path: 'server/web/web.go|server/plugins/encryption/tink_keyset_watcher.go'
      linters:
        - forbidigo