run:
  timeout: 8m
  tests: true
  build-tags:
    - admin
    - functional
    - integration
  skip-dirs:
    # paths are relative to module root
    - cri-containerd/test-images

linters:
  enable:
    # defaults:
    # - errcheck
    # - gosimple
    # - govet
    # - ineffassign
    # - staticcheck
    # - typecheck
    # - unused

    - gofmt # whether code was gofmt-ed
    - nolintlint # ill-formed or insufficient nolint directives
    - stylecheck # golint replacement
    - thelper #  test helpers without t.Helper()

linters-settings:
  stylecheck:
    # https://staticcheck.io/docs/checks
    checks: ["all"]

issues:
  exclude-rules:
    # path is relative to module root, which is ./test/
    - path: cri-containerd
      linters:
        - stylecheck
      text: "^ST1003: should not use underscores in package names$"
      source: "^package cri_containerd$"

    # This repo has a LOT of generated schema files, operating system bindings, and other
    # things that ST1003 from stylecheck won't like (screaming case Windows api constants for example).
    # There's also some structs that we *could* change the initialisms to be Go friendly
    # (Id -> ID) but they're exported and it would be a breaking change.
    # This makes it so that most new code, code that isn't supposed to be a pretty faithful
    # mapping to an OS call/constants, or non-generated code still checks if we're following idioms,
    # while ignoring the things that are just noise or would be more of a hassle than it'd be worth to change.
    - path: layer.go
      linters:
        - stylecheck
      Text: "ST1003:"

    - path: hcsshim.go
      linters:
        - stylecheck
      Text: "ST1003:"

    - path: cmd\\ncproxy\\nodenetsvc\\
      linters:
        - stylecheck
      Text: "ST1003:"

    - path: cmd\\ncproxy_mock\\
      linters:
        - stylecheck
      Text: "ST1003:"

    - path: internal\\hcs\\schema2\\
      linters:
        - stylecheck
        - gofmt

    - path: internal\\wclayer\\
      linters:
        - stylecheck
      Text: "ST1003:"

    - path: hcn\\
      linters:
        - stylecheck
      Text: "ST1003:"

    - path: internal\\hcs\\schema1\\
      linters:
        - stylecheck
      Text: "ST1003:"

    - path: internal\\hns\\
      linters:
        - stylecheck
      Text: "ST1003:"

    - path: ext4\\internal\\compactext4\\
      linters:
        - stylecheck
      Text: "ST1003:"

    - path: ext4\\internal\\format\\
      linters:
        - stylecheck
      Text: "ST1003:"

    - path: internal\\guestrequest\\
      linters:
        - stylecheck
      Text: "ST1003:"

    - path: internal\\guest\\prot\\
      linters:
        - stylecheck
      Text: "ST1003:"

    - path: internal\\windevice\\
      linters:
        - stylecheck
      Text: "ST1003:"

    - path: internal\\winapi\\
      linters:
        - stylecheck
      Text: "ST1003:"

    - path: internal\\vmcompute\\
      linters:
        - stylecheck
      Text: "ST1003:"

    - path: internal\\regstate\\
      linters:
        - stylecheck
      Text: "ST1003:"

    - path: internal\\hcserror\\
      linters:
        - stylecheck
      Text: "ST1003:"
    
    # v0 APIs are deprecated, but still retained for backwards compatability
    - path: cmd\\ncproxy\\
      linters:
        - staticcheck
      text: "^SA1019: .*(ncproxygrpc|nodenetsvc)[/]?v0"

    - path: internal\\tools\\networkagent
      linters:
        - staticcheck
      text: "^SA1019: .*nodenetsvc[/]?v0"
