Skip to content

Commit

Permalink
add new config and clean (#14)
Browse files Browse the repository at this point in the history
  • Loading branch information
kaymckay authored Mar 7, 2022
1 parent d12e8c9 commit 7eb82b6
Show file tree
Hide file tree
Showing 11 changed files with 161 additions and 69 deletions.
163 changes: 96 additions & 67 deletions .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,30 +28,27 @@ linters-settings:

# https://github.com/ultraware/funlen
funlen:
lines: 100
statements: 50
# accounting for comments
lines: 160
statements: 70

# https://github.com/tommy-muehle/go-mnd
gomnd:
settings:
mnd:
# don't include the "operation" and "assign"
checks:
- argument
- case
- condition
- return
# https://github.com/denis-tingaikin/go-header
goheader:
template: |-
Copyright (c) {{ YEAR }} Target Brands, Inc. All rights reserved.
Use of this source code is governed by the LICENSE file in this repository.
# https://github.com/client9/misspell
misspell:
locale: US

# https://github.com/golangci/golangci-lint/blob/master/pkg/golinters/nolintlint
nolintlint:
allow-leading-space: true # allow non-"machine-readable" format (ie. with leading space)
allow-unused: false # allow nolint directives that don't address a linting issue
require-explanation: true # require an explanation for nolint directives
require-specific: true # require nolint directives to be specific about which linter is being skipped
allow-leading-space: true # allow non-"machine-readable" format (ie. with leading space)
allow-unused: false # allow nolint directives that don't address a linting issue
require-explanation: true # require an explanation for nolint directives
require-specific: true # require nolint directives to be specific about which linter is being skipped

# This section provides the configuration for which linters
# golangci will execute. Several of them were disabled by
Expand All @@ -62,56 +59,91 @@ linters:

# enable a specific set of linters to run
enable:
- bodyclose
- deadcode # enabled by default
- dupl
- errcheck # enabled by default
- funlen
- goconst
- gocyclo
- godot
- gofmt
- goimports
- revive
- gomnd
- goprintffuncname
- gosec
- gosimple # enabled by default
- govet # enabled by default
- ineffassign # enabled by default
- misspell
- nakedret
- nolintlint
- staticcheck # enabled by default
- structcheck # enabled by default
- stylecheck
- typecheck # enabled by default
- unconvert
- unparam
- unused # enabled by default
- varcheck # enabled by default
- whitespace

- bidichk # checks for dangerous unicode character sequences
- bodyclose # checks whether HTTP response body is closed successfully
- contextcheck # check the function whether use a non-inherited context
- deadcode # finds unused code
- dupl # code clone detection
- errcheck # checks for unchecked errors
- errorlint # find misuses of errors
- exportloopref # check for exported loop vars
- funlen # detects long functions
- goconst # finds repeated strings that could be replaced by a constant
- gocyclo # computes and checks the cyclomatic complexity of functions
- godot # checks if comments end in a period
- gofmt # checks whether code was gofmt-ed
- goheader # checks is file header matches to pattern
- goimports # fixes imports and formats code in same style as gofmt
- gomoddirectives # manage the use of 'replace', 'retract', and 'excludes' directives in go.mod
- goprintffuncname # checks that printf-like functions are named with f at the end
- gosec # inspects code for security problems
- gosimple # linter that specializes in simplifying a code
- govet # reports suspicious constructs, ex. Printf calls whose arguments don't align with the format string
- ineffassign # detects when assignments to existing variables aren't used
- makezero # finds slice declarations with non-zero initial length
- misspell # finds commonly misspelled English words in comments
- nakedret # finds naked returns in functions greater than a specified function length
- nilerr # finds the code that returns nil even if it checks that the error is not nil
- noctx # noctx finds sending http request without context.Context
- nolintlint # reports ill-formed or insufficient nolint directives
- revive # linter for go
- staticcheck # applies static analysis checks, go vet on steroids
- structcheck # finds unused struct fields
- stylecheck # replacement for golint
- tenv # analyzer that detects using os.Setenv instead of t.Setenv since Go1.17
- typecheck # parses and type-checks go code, like the front-end of a go compiler
- unconvert # remove unnecessary type conversions
- unparam # reports unused function parameters
- unused # checks for unused constants, variables, functions and types
- varcheck # finds unused global variables and constants
- whitespace # detects leading and trailing whitespace
- wsl # forces code to use empty lines

# static list of linters we know golangci can run but we've
# chosen to leave disabled for now
# - asciicheck
# - depguard
# - dogsled
# - exhaustive
# - gochecknoinits
# - gochecknoglobals
# - gocognit
# - gocritic
# - godox
# - goerr113
# - interfacer
# - nestif
# - noctx
# - prealloc
# - rowserrcheck
# - scopelint
# - testpackage
# - wsl
# - asciicheck - non-critical
# - cyclop - unused complexity metric
# - depguard - unused
# - dogsled - blanks allowed
# - durationcheck - unused
# - errname - unused
# - exhaustive - unused
# - exhaustivestruct - style preference
# - forbidigo - unused
# - forcetypeassert - unused
# - gci - use goimports
# - gochecknoinits - unused
# - gochecknoglobals - global variables allowed
# - gocognit - unused complexity metric
# - gocritic - style preference
# - godox - to be used in the future
# - goerr113 - to be used in the future
# - golint - archived, replaced with revive
# - gofumpt - use gofmt
# - gomnd - get too many false-positives
# - gomodguard - unused
# - ifshort - use both styles
# - ireturn - allow interfaces to be returned
# - importas - want flexibility with naming
# - lll - not too concerned about line length
# - interfacer - archived
# - nestif - non-critical
# - nilnil - style preference
# - nlreturn - style preference
# - maligned - archived, replaced with govet 'fieldalignment'
# - paralleltest - false-positives
# - prealloc - don't use
# - predeclared - unused
# - promlinter - style preference
# - rowserrcheck - unused
# - scopelint - deprecated - replaced with exportloopref
# - sqlclosecheck - unused
# - tagliatelle - use a mix of variable naming
# - testpackage - don't use this style of testing
# - thelper - false-positives
# - varnamelen - unused
# - wastedassign - duplicate functionality
# - wrapcheck - style preference

# This section provides the configuration for how golangci
# will report the issues it finds.
Expand All @@ -125,6 +157,3 @@ issues:
- funlen
- goconst
- gocyclo
- gomnd
- lll
- revive
4 changes: 4 additions & 0 deletions cmd/vela-scp/main.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
// Copyright (c) 2022 Target Brands, Inc. All rights reserved.
//
// Use of this source code is governed by the LICENSE file in this repository.

package main

import (
Expand Down
4 changes: 4 additions & 0 deletions cmd/vela-ssh/main.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
// Copyright (c) 2022 Target Brands, Inc. All rights reserved.
//
// Use of this source code is governed by the LICENSE file in this repository.

package main

import (
Expand Down
5 changes: 5 additions & 0 deletions internal/openssh/openssh.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
// Copyright (c) 2022 Target Brands, Inc. All rights reserved.
//
// Use of this source code is governed by the LICENSE file in this repository.

package openssh

import (
Expand Down Expand Up @@ -86,5 +90,6 @@ func CreateRestrictedFile(fs afero.Fs, fileprefix string, contents string) (stri
if err := fs.Chmod(file.Name(), TempFilePermissions); err != nil {
return "", fmt.Errorf("couldn't set file permissions: %w", err)
}

return file.Name(), nil
}
10 changes: 10 additions & 0 deletions internal/scp/scp.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
// Copyright (c) 2022 Target Brands, Inc. All rights reserved.
//
// Use of this source code is governed by the LICENSE file in this repository.

// This package wraps the scp portion of the OpenSSH binaries to allow
// for copying files to/from remote and local file systems.

Expand Down Expand Up @@ -116,12 +120,15 @@ func (c *Config) Setup() error {
tempSCPPath := fmt.Sprintf("%s/scp", path)
tempSSHPath := fmt.Sprintf("%s/ssh", path)
tempSSHPassPath := fmt.Sprintf("%s/sshpass", path)

if ok, _ := afero.Exists(c.fs, tempSCPPath); ok && len(c.locationSCPbinary) == 0 {
c.locationSCPbinary = tempSCPPath
}

if ok, _ := afero.Exists(c.fs, tempSSHPath); ok && len(c.locationSSHbinary) == 0 {
c.locationSSHbinary = tempSSHPath
}

if ok, _ := afero.Exists(c.fs, tempSSHPassPath); ok && len(c.locationSSHPASSbinary) == 0 {
c.locationSSHPASSbinary = tempSSHPassPath
}
Expand All @@ -144,6 +151,7 @@ func (c *Config) Setup() error {
if err != nil {
return err
}

c.IdentityFilePath = append([]string{filename}, c.IdentityFilePath...)
}

Expand All @@ -152,6 +160,7 @@ func (c *Config) Setup() error {
if err != nil {
return err
}

c.locationPasswordFile = filename
}

Expand All @@ -160,6 +169,7 @@ func (c *Config) Setup() error {
if err != nil {
return err
}

c.locationPassphraseFile = filename
}

Expand Down
6 changes: 5 additions & 1 deletion internal/scp/scp_test.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
// Copyright (c) 2022 Target Brands, Inc. All rights reserved.
//
// Use of this source code is governed by the LICENSE file in this repository.

package scp

import (
Expand Down Expand Up @@ -80,7 +84,7 @@ func TestValidateErrors(t *testing.T) {
t.Run(name, func(t *testing.T) {
if err := test.config.Validate(); err == nil {
t.Errorf("Validate() should have raised an error")
} else if (test.wantErr != nil) && (err != test.wantErr) {
} else if (test.wantErr != nil) && !errors.Is(err, test.wantErr) {
t.Errorf("Validate() returned wrong error\ngot: %s\nwanted: %s", err, test.wantErr)
}
})
Expand Down
9 changes: 9 additions & 0 deletions internal/ssh/ssh.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
// Copyright (c) 2022 Target Brands, Inc. All rights reserved.
//
// Use of this source code is governed by the LICENSE file in this repository.

// This package wraps the ssh portion of the OpenSSH binaries to allow
// for executing scripts and commands on remote systems.

Expand Down Expand Up @@ -113,9 +117,11 @@ func (c *Config) Setup() error {
for _, path := range openssh.BinSearchLocations {
tempSSHPath := fmt.Sprintf("%s/ssh", path)
tempSSHPassPath := fmt.Sprintf("%s/sshpass", path)

if ok, _ := afero.Exists(c.fs, tempSSHPath); ok && len(c.locationSSHbinary) == 0 {
c.locationSSHbinary = tempSSHPath
}

if ok, _ := afero.Exists(c.fs, tempSSHPassPath); ok && len(c.locationSSHPASSbinary) == 0 {
c.locationSSHPASSbinary = tempSSHPassPath
}
Expand All @@ -134,6 +140,7 @@ func (c *Config) Setup() error {
if err != nil {
return err
}

c.IdentityFilePath = append([]string{filename}, c.IdentityFilePath...)
}

Expand All @@ -142,6 +149,7 @@ func (c *Config) Setup() error {
if err != nil {
return err
}

c.locationPasswordFile = filename
}

Expand All @@ -150,6 +158,7 @@ func (c *Config) Setup() error {
if err != nil {
return err
}

c.locationPassphraseFile = filename
}

Expand Down
6 changes: 5 additions & 1 deletion internal/ssh/ssh_test.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
// Copyright (c) 2022 Target Brands, Inc. All rights reserved.
//
// Use of this source code is governed by the LICENSE file in this repository.

package ssh

import (
Expand Down Expand Up @@ -80,7 +84,7 @@ func TestValidateErrors(t *testing.T) {
t.Run(name, func(t *testing.T) {
if err := test.config.Validate(); err == nil {
t.Errorf("Validate() should have raised an error")
} else if (test.wantErr != nil) && (err != test.wantErr) {
} else if (test.wantErr != nil) && !errors.Is(err, test.wantErr) {
t.Errorf("Validate() returned wrong error\ngot: %s\nwanted: %s", err, test.wantErr)
}
})
Expand Down
6 changes: 6 additions & 0 deletions internal/testutils/testutils.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
// Copyright (c) 2022 Target Brands, Inc. All rights reserved.
//
// Use of this source code is governed by the LICENSE file in this repository.

package testutils

import (
Expand Down Expand Up @@ -29,6 +33,7 @@ func CreateMockFiles(t *testing.T, filename ...string) afero.Fs {
t.FailNow()
}
}

return fs
}

Expand Down Expand Up @@ -70,6 +75,7 @@ func FlattenArguments(args ...interface{}) (flatArgs []string) {
default:
}
}

return
}

Expand Down
Loading

0 comments on commit 7eb82b6

Please sign in to comment.