Skip to content

Commit

Permalink
refactor: fix linting errors (#102)
Browse files Browse the repository at this point in the history
- fix linting errors
- update golangci lint config
- improve lint ci jobs
  • Loading branch information
jooola authored Nov 6, 2023
1 parent a856c06 commit bc35095
Show file tree
Hide file tree
Showing 14 changed files with 105 additions and 217 deletions.
89 changes: 0 additions & 89 deletions .github/workflows/go-validate.yml

This file was deleted.

51 changes: 51 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: Lint

on:
push:
branches: [main]
pull_request:

permissions:
contents: read

jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-go@v4
with:
go-version: "1.20"
cache: false

- uses: golangci/golangci-lint-action@v3
with:
version: v1.55.1 # renovate: datasource=github-releases depName=golangci/golangci-lint

check-mod-tidy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-go@v4
with:
go-version: "1.20"

- run: go mod tidy
- run: |
if ! git diff --exit-code; then
echo "::error::Found changes in code, don't forget to run 'go mod tidy' before you commit."
fi
check-generate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-go@v4
with:
go-version: "1.20"

- run: make generate
- run: |
if ! git diff --exit-code; then
echo "::error::Found changes in generated code, don't forget to run 'make generate' before you commit."
fi
143 changes: 30 additions & 113 deletions .golangci.yml
Original file line number Diff line number Diff line change
@@ -1,125 +1,42 @@
# Copyright (c) HashiCorp, Inc.
# SPDX-License-Identifier: MPL-2.0

issues:
# List of regexps of issue texts to exclude, empty list by default.
# But independently from this option we use default exclude patterns,
# it can be disabled by `exclude-use-default: false`. To list all
# excluded by default patterns execute `golangci-lint run --help`

exclude-rules:
# Exclude gosimple bool check
- linters:
- gosimple
text: "S(1002|1008|1021)"
# Exclude failing staticchecks for now
- linters:
- staticcheck
text: "SA(1006|1019|4006|4010|4017|5007|6005|9004):"
# Exclude lll issues for long lines with go:generate
- linters:
- lll
source: "^//go:generate "

# Maximum issues count per one linter. Set to 0 to disable. Default is 50.
max-issues-per-linter: 0

# Maximum count of issues with the same text. Set to 0 to disable. Default is 3.
max-same-issues: 0
---
linters-settings:
gci:
sections:
- standard
- default
- prefix(github.com/hetznercloud)
exhaustive:
default-signifies-exhaustive: true
misspell:
locale: "US"
revive:
rules:
- name: var-naming
disabled: true

linters:
disable-all: true
enable:
- bodyclose
- dupl
- errcheck
- exhaustive
- exportloopref
- gci
- gocritic
- gofmt
- goimports
- gomodguard
- gosec
- gosimple
- govet
- ineffassign
- misspell
- revive
- rowserrcheck
- staticcheck
- typecheck
- unconvert
- unparam
- unused
fast: true

# options for analysis running
run:
# default concurrency is a available CPU number
concurrency: 4

# timeout for analysis, e.g. 30s, 5m, default is 1m
timeout: 10m

# exit code when at least one issue was found, default is 1
issues-exit-code: 1

# include test files or not, default is true
tests: true

# list of build tags, all linters use it. Default is empty list.
#build-tags:
# - mytag

# which dirs to skip: issues from them won't be reported;
# can use regexp here: generated.*, regexp is applied on full path;
# default value is empty list, but default dirs are skipped independently
# from this option's value (see skip-dirs-use-default).
#skip-dirs:
# - src/external_libs
# - autogenerated_by_my_lib

# default is true. Enables skipping of directories:
# vendor$, third_party$, testdata$, examples$, Godeps$, builtin$
skip-dirs-use-default: true

# 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:
- ".*\\.hcl2spec\\.go$"
# - lib/bad.go

# by default isn't set. If set we pass it to "go list -mod={option}". From "go help modules":
# If invoked with -mod=readonly, the go command is disallowed from the implicit
# automatic updating of go.mod described above. Instead, it fails when any changes
# to go.mod are needed. This setting is most useful to check that go.mod does
# not need updates, such as in a continuous integration and testing system.
# If invoked with -mod=vendor, the go command assumes that the vendor
# directory holds the correct copies of dependencies and ignores
# the dependency descriptions in go.mod.
# modules-download-mode: vendor


# 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

# make issues output unique by line, default is true
uniq-by-line: 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

# report about assignment of errors to blank identifier: `num, _ := strconv.Atoi(numStr)`;
# default is false: such cases aren't reported by default.
check-blank: 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.*,io:Close

# 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
- whitespace
4 changes: 2 additions & 2 deletions builder/hcloud/builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ import (
"github.com/hashicorp/packer-plugin-sdk/multistep"
"github.com/hashicorp/packer-plugin-sdk/multistep/commonsteps"
packersdk "github.com/hashicorp/packer-plugin-sdk/packer"
"github.com/hetznercloud/hcloud-go/v2/hcloud"

"github.com/hetznercloud/hcloud-go/v2/hcloud"
"github.com/hetznercloud/packer-plugin-hcloud/version"
)

Expand Down Expand Up @@ -41,7 +41,7 @@ func (b *Builder) Run(ctx context.Context, ui packersdk.Ui, hook packersdk.Hook)
opts := []hcloud.ClientOption{
hcloud.WithToken(b.config.HCloudToken),
hcloud.WithEndpoint(b.config.Endpoint),
hcloud.WithPollInterval(b.config.PollInterval),
hcloud.WithBackoffFunc(hcloud.ConstantBackoff(b.config.PollInterval)),
hcloud.WithApplication("hcloud-packer", version.PluginVersion.String()),
}
b.hcloudClient = hcloud.NewClient(opts...)
Expand Down
3 changes: 2 additions & 1 deletion builder/hcloud/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,9 @@ import (
"github.com/hashicorp/packer-plugin-sdk/template/config"
"github.com/hashicorp/packer-plugin-sdk/template/interpolate"
"github.com/hashicorp/packer-plugin-sdk/uuid"
"github.com/hetznercloud/hcloud-go/v2/hcloud"
"github.com/mitchellh/mapstructure"

"github.com/hetznercloud/hcloud-go/v2/hcloud"
)

type Config struct {
Expand Down
9 changes: 5 additions & 4 deletions builder/hcloud/step_create_server.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,13 @@ package hcloud
import (
"context"
"fmt"
"io/ioutil"
"os"
"sort"
"strings"

"github.com/hashicorp/packer-plugin-sdk/multistep"
packersdk "github.com/hashicorp/packer-plugin-sdk/packer"

"github.com/hetznercloud/hcloud-go/v2/hcloud"
)

Expand All @@ -30,7 +31,7 @@ func (s *stepCreateServer) Run(ctx context.Context, state multistep.StateBag) mu

userData := c.UserData
if c.UserDataFile != "" {
contents, err := ioutil.ReadFile(c.UserDataFile)
contents, err := os.ReadFile(c.UserDataFile)
if err != nil {
state.Put("error", fmt.Errorf("Problem reading user data file: %s", err))
return multistep.ActionHalt
Expand Down Expand Up @@ -85,7 +86,7 @@ func (s *stepCreateServer) Run(ctx context.Context, state multistep.StateBag) mu
}

if c.UpgradeServerType != "" {
serverCreateOpts.StartAfterCreate = hcloud.Bool(false)
serverCreateOpts.StartAfterCreate = hcloud.Ptr(false)
}

serverCreateResult, _, err := client.Server.Create(ctx, serverCreateOpts)
Expand Down Expand Up @@ -199,7 +200,7 @@ func (s *stepCreateServer) Cleanup(state multistep.StateBag) {

// Destroy the server we just created
ui.Say("Destroying server...")
_, err := client.Server.Delete(context.TODO(), &hcloud.Server{ID: s.serverId})
_, _, err := client.Server.DeleteWithResult(context.TODO(), &hcloud.Server{ID: s.serverId})
if err != nil {
ui.Error(fmt.Sprintf(
"Error destroying server. Please destroy it manually: %s", err))
Expand Down
2 changes: 1 addition & 1 deletion builder/hcloud/step_create_server_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import (

"github.com/hashicorp/packer-plugin-sdk/multistep"
packersdk "github.com/hashicorp/packer-plugin-sdk/packer"

"github.com/hetznercloud/hcloud-go/v2/hcloud"
"github.com/hetznercloud/hcloud-go/v2/hcloud/schema"
)
Expand Down Expand Up @@ -142,7 +143,6 @@ func setupStepCreateServer(
checker Checker,
) (*multistep.BasicStateBag, func()) {
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {

buf, err := io.ReadAll(r.Body)
if err != nil {
errors <- fmt.Errorf("fake server: reading request: %s", err)
Expand Down
Loading

0 comments on commit bc35095

Please sign in to comment.