run:
  concurrency: 2
  timeout: 10m
linters:
  enable-all: false
  disable-all: true
  enable:
    - depguard
    - errcheck
    - errorlint
    - gocritic
    - gocyclo
    - gofmt
    - goimports
    - gomodguard
    - revive
    - gosimple
    - govet
    - ineffassign
    - lll
    - misspell
    - nakedret
    - nolintlint
    - staticcheck
    - typecheck
    - unconvert
    - unparam
    - unused
linters-settings:
  revive:
    rules:
      - name: package-comments
        disabled: true
  depguard:
    rules:
      all:
        deny:
          - pkg: io/ioutil
            desc: 'io/ioutil package has been deprecated'
          - pkg: gopkg.in/yaml.v2
            desc: 'compose-go uses yaml.v3'
  gomodguard:
    blocked:
      modules:
        - github.com/pkg/errors:
            recommendations:
              - errors
              - fmt
      versions:
        - github.com/distribution/distribution:
            reason: "use distribution/reference"
        - gotest.tools:
            version: "< 3.0.0"
            reason: "deprecated, pre-modules version"
  gocritic:
    # Enable multiple checks by tags, run `GL_DEBUG=gocritic golangci-lint run` to see all tags and checks.
    # Empty list by default. See https://github.com/go-critic/go-critic#usage -> section "Tags".
    enabled-tags:
      - diagnostic
      - opinionated
      - style
    disabled-checks:
      - paramTypeCombine
      - unnamedResult
      - whyNoLint
  gocyclo:
    min-complexity: 16
  lll:
    line-length: 200
issues:
  # golangci hides some golint warnings (the warning about exported things
  # withtout documentation for example), this will make it show them anyway.
  exclude-use-default: false
