From ecf587a0fe435f04e25aec76093adc544c398d33 Mon Sep 17 00:00:00 2001 From: Michael Freeman Date: Sat, 5 Oct 2024 01:02:14 -0500 Subject: [PATCH] new cicd --- .github/dependabot.yml | 20 ++++ .github/workflows/golangci-lint.yml | 24 +++++ .gitignore | 24 +++++ .golangci.yml | 162 ++++++++++++++++++++++++++++ .ls-lint.yml | 4 + 5 files changed, 234 insertions(+) create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/golangci-lint.yml create mode 100644 .gitignore create mode 100644 .golangci.yml create mode 100644 .ls-lint.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..eaeb752 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,20 @@ +--- +version: 2 +updates: + - package-ecosystem: "gomod" + open-pull-requests-limit: 10 # avoid spam, if no one reacts + directory: "/" + schedule: + interval: "weekly" + + - package-ecosystem: "github-actions" + open-pull-requests-limit: 10 # avoid spam, if no one reacts + directory: "/" + schedule: + # Check for updates to GitHub Actions every week + interval: "weekly" + groups: + actions: + update-types: + - "minor" + - "patch" diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml new file mode 100644 index 0000000..c54f521 --- /dev/null +++ b/.github/workflows/golangci-lint.yml @@ -0,0 +1,24 @@ +name: golangci-lint +on: + push: + branches: + - main + pull_request: + +permissions: + contents: read + # Optional: allow read access to pull request. Use with `only-new-issues` option. + +jobs: + golangci: + name: lint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 + with: + go-version: stable + - name: golangci-lint + uses: golangci/golangci-lint-action@v6 + with: + version: v1.60 \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ab2b93a --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +# Binaries for programs and plugins +*.exe +*.exe~ +*.dll +*.so +*.dylib + +# Test binary, built with `go test -c` +*.test + + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out +coverage.txt + +# Dependency directories (remove the comment below to include it) +vendor/ + +.idea +*.impl + +# IDE Cache +.vscode +.DS_Store diff --git a/.golangci.yml b/.golangci.yml new file mode 100644 index 0000000..1f01c9b --- /dev/null +++ b/.golangci.yml @@ -0,0 +1,162 @@ +--- +linters-settings: + dupl: + threshold: 100 + exhaustive: + default-signifies-exhaustive: false + funlen: + lines: 100 + statements: 50 + gci: + sections: + - standard + - default + - localmodule + goconst: + min-len: 2 + min-occurrences: 2 + gocritic: + enabled-tags: + - diagnostic + - experimental + - opinionated + - performance + - style + disabled-checks: + - dupImport # https://github.com/go-critic/go-critic/issues/845 + - ifElseChain + - octalLiteral + - whyNoLint + - wrapperFunc + gocyclo: + min-complexity: 10 + goimports: + local-prefixes: github.com/golangci/golangci-lint + golint: + min-confidence: 0 + mnd: + checks: + - argument + - case + - condition + - return + govet: + enable: + - shadow + settings: + printf: + funcs: + - (gofr.dev/pkg/gofr/Logger).Logf + - (gofr.dev/pkg/gofr/Logger).Errorf + lll: + line-length: 140 + maligned: + suggest-new: true + misspell: + locale: US + nolintlint: + allow-unused: false # report any unused nolint directives + require-explanation: true # require an explanation for nolint directives + require-specific: true # require nolint directives to be specific about which linter is being skipped + revive: + rules: + # default revive rules, they have to be present otherwise they are disabled + - name: blank-imports + - name: context-as-argument + - name: context-keys-type + - name: dot-imports + - name: empty-block + - name: error-naming + - name: error-return + - name: error-strings + - name: errorf + - name: increment-decrement + - name: indent-error-flow + - name: range + - name: receiver-naming + - name: redefines-builtin-id + - name: superfluous-else + - name: time-naming + - name: unexported-return + - name: unreachable-code + - name: unused-parameter + - name: var-declaration + - name: var-naming + # additional revive rules + - name: bare-return + - name: bool-literal-in-expr + - name: comment-spacings + - name: early-return + - name: defer + - name: deep-exit + - name: unused-receiver + +linters: + # please, do not use `enable-all`: it's deprecated and will be removed soon. + # inverted configuration with `enable-all` and `disable` is not scalable during updates of golangci-lint + disable-all: true + enable: + - asciicheck + - bodyclose + - dogsled + - dupl + - err113 + - errcheck + - errorlint + - exhaustive + - exportloopref + - funlen + - gochecknoglobals + - gochecknoinits + - gocognit + - goconst + - gocritic + - gocyclo + - godot + - gofmt + - goimports + - goprintffuncname + - gosec + - gosimple + - govet + - ineffassign + - lll + - mirror + - misspell + - mnd + - nakedret + - nestif + - noctx + - nolintlint + - prealloc + - revive + - rowserrcheck + - staticcheck + - stylecheck + - testifylint + - thelper + - unconvert + - unparam + - unused + - usestdlibvars + - whitespace + - wsl + + # don't enable: + # - godox # Disabling because we need TODO lines at this stage of project. + # - testpackage # We also need to do unit test for unexported functions. And adding _internal in all files is cumbersome. + + +service: + golangci-lint-version: 1.59.x + +issues: + # exclude-use-default: false + # exclude-use-default: false # By default, golangci-lint does not enforce comments on exported types. We want it. + # Excluding configuration per-path, per-linter, per-text and per-source + exclude-rules: + - path: _test\.go + linters: + - gomnd + - dupl + - goconst \ No newline at end of file diff --git a/.ls-lint.yml b/.ls-lint.yml new file mode 100644 index 0000000..9890a74 --- /dev/null +++ b/.ls-lint.yml @@ -0,0 +1,4 @@ +--- +ls: + .go: snake_case + .pb.go: snake_case