# Copyright (c) HashiCorp, Inc.
# SPDX-License-Identifier: BUSL-1.1

run:
  # Timeout for analysis.
  deadline: 10m

  # Modules download mode (do not modify go.mod)
  module-download-mode: readonly

  # Exclude test files
  tests: false

  # which dirs to skip: they won't be analyzed;
  # can use regexp here: generated.*, regexp is applied on full path;
  # default value is empty list, but next dirs are always skipped independently
  # from this option's value:
  #   	vendor$, third_party$, testdata$, examples$, Godeps$, builtin$
  skip-dirs:
    - ui

  # which files to skip: they will be analyzed, but issues from them
  # won't be reported. Default value is empty list, but there is
  # no need to include all autogenerated files, we confidently recognize
  # autogenerated files. If it's not please let us know.
  skip-files:
    - ".*\\.generated\\.go$"
    - ".*bindata_assetfs\\.go$"

# output configuration options
output:
  # colored-line-number|line-number|json|tab|checkstyle|code-climate, default is "colored-line-number"
  format: colored-line-number

  # print lines of code with issue, default is true
  print-issued-lines: true

  # print linter name in the end of issue text, default is true
  print-linter-name: true

# all available settings of specific linters
linters-settings:
  errcheck:
    # report about not checking of errors in type assetions: `a := b.(MyStruct)`;
    # default is false: such cases aren't reported by default.
    check-type-assertions: false

    # [deprecated] comma-separated list of pairs of the form pkg:regex
    # the regex is used to ignore names within pkg. (default "fmt:.*").
    # see https://github.com/kisielk/errcheck#the-deprecated-method for details
    ignore: fmt:.*,io/ioutil:^Read.*

    # path to a file containing a list of functions to exclude from checking
    # see https://github.com/kisielk/errcheck#excluding-functions for details
    # exclude: /path/to/file.txt
  govet:
    # report about shadowed variables
    check-shadowing: false
  gofmt:
    # simplify code: gofmt with `-s` option, true by default
    simplify: true
  gocritic:
    disabled-checks:
      - commentFormatting
      - deprecatedComment
  staticcheck:
    # I(jrasell) will work on enabling additional checks when possible.
    checks: ["ST1020", "ST1016"]

issues:
  exclude:
  - ifElseChain
  - singleCaseSwitch
  - assignOp
  - unlambda

linters:
  disable-all: true
  enable:
    - goimports
    - gocritic
    - misspell
    - govet
    - ineffassign
    - unconvert
    - gofmt
    - gosimple
    - staticcheck
    - asasalint
    - asciicheck
    - bidichk
    - bodyclose
    - dogsled
    - durationcheck
    # - errchkjson (todo)
    # - errorlint (todo)
    - exportloopref
    - usestdlibvars
  fast: false

