version: "2"
run:
  timeout: 10m
linters:
  default: none
  enable:
    - dupl
    - govet
    - ineffassign
    - misspell
    - nakedret
    - revive
    - staticcheck
    - unused
  settings:
    dupl:
      threshold: 400
  exclusions:
    # Helm, and the Go source code itself, sometimes uses these names outside their built-in
    # functions. As the Go source code has re-used these names it's ok for Helm to do the same.
    # Linting will look for redefinition of built-in id's but we opt-in to the ones we choose to use.
    generated: lax
    presets:
      - comments
      - common-false-positives
      - legacy
      - std-error-handling
    rules:
      - linters:
          - revive
        text: 'redefines-builtin-id: redefinition of the built-in function append'
      - linters:
          - revive
        text: 'redefines-builtin-id: redefinition of the built-in function clear'
      - linters:
          - revive
        text: 'redefines-builtin-id: redefinition of the built-in function max'
      - linters:
          - revive
        text: 'redefines-builtin-id: redefinition of the built-in function min'
      - linters:
          - revive
        text: 'redefines-builtin-id: redefinition of the built-in function new'
    paths:
      - third_party$
      - builtin$
      - examples$
formatters:
  enable:
    - gofmt
    - goimports
  settings:
    gofmt:
      simplify: true
    goimports:
      local-prefixes:
        - helm.sh/helm/v4
  exclusions:
    generated: lax
    paths:
      - third_party$
      - builtin$
      - examples$
