run:
  tests: true
  timeout: 10m
issues:
  exclude-dirs:
    - internal/pb

linters-settings:
  errcheck:
    check-blank: false
    ignore: fmt:.*,[rR]ead|[wW]rite|[cC]lose,io:Copy
  gocritic:
    disabled-checks:
      - commentFormatting
  dupl:
    # tokens count to trigger issue, 150 by default
    threshold: 500
  decorder:
    dec-order:
      - type
      - const
      - var
      - func
    disable-dec-order-check: false
  govet:
    enable-all: true
    disable:
      - fieldalignment
      - shadow

  revive:
    enable-all-rules: true
    rules:
      - name: cyclomatic
        disabled: true
      - name: argument-limit
        disabled: true
      - name: function-length
        disabled: true
      - name: function-result-limit
        disabled: true
      - name: line-length-limit
        disabled: true
      - name: file-header
        disabled: true
      - name: cognitive-complexity
        disabled: true
      - name: banned-characters
        disabled: true
      - name: max-public-structs
        disabled: true
      - name: add-constant
        disabled: true
      - name: unhandled-error
        disabled: true
      - name: deep-exit
        disabled: true
      - name: nested-structs
        disabled: true
      - name: import-alias-naming
        disabled: true
      - name: unchecked-type-assertion
        disabled: true

  gofmt:
    rewrite-rules:
      - pattern: "interface{}"
        replacement: "any"
      - pattern: "a[b:len(a)]"
        replacement: "a[b:]"

linters:
  enable:
    - asciicheck
    - bodyclose
    - dupl
    - errcheck
    - gocritic
    - gofmt
    - gosimple
    - govet
    - ineffassign
    - importas
    - misspell
    - nakedret
    - prealloc
    - revive
    - staticcheck
    - unconvert
    - unparam
    - unused
