Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ jobs:
check-latest: true
cache: true

- uses: golangci/golangci-lint-action@v4.0.0
- uses: golangci/golangci-lint-action@v8.0.0
with:
version: latest
args: --verbose
Expand Down
28 changes: 15 additions & 13 deletions .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,20 @@
# See the License for the specific language governing permissions and
# limitations under the License.

version: "2"

run:
deadline: 5m
timeout: 5m

formatters:
enable:
- gofmt
- goimports

linters:
disable-all: true
default: none
enable:
#- bodyclose
# - deadcode ! deprecated since v1.49.0; replaced by 'unused'
#- depguard
#- dogsled
#- dupl
Expand All @@ -30,28 +36,24 @@ linters:
- goconst
- gocritic
#- gocyclo
- gofmt
- goimports
#- gomnd
#- goprintffuncname
- gosec
- gosimple
- govet
- ineffassign
#- lll
- misspell
#- mnd
#- nakedret
#- noctx
- nolintlint
#- rowserrcheck
#- scopelint
- staticcheck
#- structcheck ! deprecated since v1.49.0; replaced by 'unused'
- stylecheck
#- typecheck
- unconvert
#- unparam
- unused
# - varcheck ! deprecated since v1.49.0; replaced by 'unused'
#- whitespace
fast: false
exclusions:
presets:
- common-false-positives
- legacy
- std-error-handling
2 changes: 1 addition & 1 deletion command_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2926,7 +2926,7 @@ func TestHelpFuncExecuted(t *testing.T) {
helpText := "Long description"

// Create a context that will be unique, not just the background context
//nolint:golint,staticcheck // We can safely use a basic type as key in tests.
//nolint:staticcheck // We can safely use a basic type as key in tests.
executionCtx := context.WithValue(context.Background(), "testKey", "123")

child := &Command{Use: "child", Run: emptyRun}
Expand Down
4 changes: 2 additions & 2 deletions completions.go
Original file line number Diff line number Diff line change
Expand Up @@ -375,7 +375,7 @@ func (c *Command) getCompletions(args []string) (*Command, []Completion, ShellCo
// Error while attempting to parse flags
if flagErr != nil {
// If error type is flagCompError and we don't want flagCompletion we should ignore the error
if _, ok := flagErr.(*flagCompError); !(ok && !flagCompletion) {
if _, ok := flagErr.(*flagCompError); !ok || flagCompletion {
return finalCmd, []Completion{}, ShellCompDirectiveDefault, flagErr
}
}
Expand Down Expand Up @@ -773,7 +773,7 @@ See each sub-command's help for details on how to use the generated script.
// shell completion for it (prog __complete completion '')
subCmd, cmdArgs, err := c.Find(args)
if err != nil || subCmd.Name() != compCmdName &&
!(subCmd.Name() == ShellCompRequestCmd && len(cmdArgs) > 1 && cmdArgs[0] == compCmdName) {
(subCmd.Name() != ShellCompRequestCmd || len(cmdArgs) <= 1 || cmdArgs[0] != compCmdName) {
// The completion command is not being called or being completed so we remove it.
c.RemoveCommand(completionCmd)
return
Expand Down
13 changes: 6 additions & 7 deletions completions_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1297,7 +1297,7 @@ func TestValidArgsFuncCmdContext(t *testing.T) {
}
rootCmd.AddCommand(childCmd)

//nolint:golint,staticcheck // We can safely use a basic type as key in tests.
//nolint:staticcheck // We can safely use a basic type as key in tests.
ctx := context.WithValue(context.Background(), "testKey", "123")

// Test completing an empty string on the childCmd
Expand Down Expand Up @@ -2899,7 +2899,7 @@ func TestCompletionFuncCompatibility(t *testing.T) {
var userComp func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective)

// check against new signature
var _ CompletionFunc = userComp
var _ CompletionFunc = userComp //nolint:staticcheck // LHS type is needed for this use case

// check Command accepts
cmd := Command{
Expand All @@ -2913,8 +2913,7 @@ func TestCompletionFuncCompatibility(t *testing.T) {
var userComp func(cmd *Command, args []string, toComplete string) ([]Completion, ShellCompDirective)

// check against new signature
var _ CompletionFunc = userComp

var _ CompletionFunc = userComp //nolint:staticcheck // LHS type is needed for this use case
// check Command accepts
cmd := Command{
ValidArgsFunction: userComp,
Expand All @@ -2927,8 +2926,8 @@ func TestCompletionFuncCompatibility(t *testing.T) {
var userComp CompletionFunc

// check helper against old signature
var _ func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective) = userComp
var _ func(cmd *Command, args []string, toComplete string) ([]Completion, ShellCompDirective) = userComp
var _ func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective) = userComp //nolint:staticcheck // LHS type is needed for this use case
var _ func(cmd *Command, args []string, toComplete string) ([]Completion, ShellCompDirective) = userComp //nolint:staticcheck // LHS type is needed for this use case

// check Command accepts
cmd := Command{
Expand Down Expand Up @@ -2967,7 +2966,7 @@ func TestCompletionFuncCompatibility(t *testing.T) {
var userComp UserCompletionTypeAliasHelper

// Here we are validating the existing type validates the CompletionFunc type
var _ CompletionFunc = userComp
var _ CompletionFunc = userComp //nolint:staticcheck // LHS type is needed for this use case

cmd := Command{
ValidArgsFunction: userComp,
Expand Down
4 changes: 2 additions & 2 deletions doc/man_docs.go
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@ func genMan(cmd *cobra.Command, header *GenManHeader) []byte {
manPrintOptions(buf, cmd)
if len(cmd.Example) > 0 {
buf.WriteString("# EXAMPLE\n")
buf.WriteString(fmt.Sprintf("```\n%s\n```\n", cmd.Example))
fmt.Fprintf(buf, "```\n%s\n```\n", cmd.Example)
}
if hasSeeAlso(cmd) {
buf.WriteString("# SEE ALSO\n")
Expand Down Expand Up @@ -240,7 +240,7 @@ func genMan(cmd *cobra.Command, header *GenManHeader) []byte {
buf.WriteString(strings.Join(seealsos, ", ") + "\n")
}
if !cmd.DisableAutoGenTag {
buf.WriteString(fmt.Sprintf("# HISTORY\n%s Auto generated by spf13/cobra\n", header.Date.Format("2-Jan-2006")))
fmt.Fprintf(buf, "# HISTORY\n%s Auto generated by spf13/cobra\n", header.Date.Format("2-Jan-2006"))
}
return buf.Bytes()
}
8 changes: 4 additions & 4 deletions doc/md_docs.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,12 +69,12 @@ func GenMarkdownCustom(cmd *cobra.Command, w io.Writer, linkHandler func(string)
}

if cmd.Runnable() {
buf.WriteString(fmt.Sprintf("```\n%s\n```\n\n", cmd.UseLine()))
fmt.Fprintf(buf, "```\n%s\n```\n\n", cmd.UseLine())
}

if len(cmd.Example) > 0 {
buf.WriteString("### Examples\n\n")
buf.WriteString(fmt.Sprintf("```\n%s\n```\n\n", cmd.Example))
fmt.Fprintf(buf, "```\n%s\n```\n\n", cmd.Example)
}

if err := printOptions(buf, cmd, name); err != nil {
Expand All @@ -87,7 +87,7 @@ func GenMarkdownCustom(cmd *cobra.Command, w io.Writer, linkHandler func(string)
pname := parent.CommandPath()
link := pname + markdownExtension
link = strings.ReplaceAll(link, " ", "_")
buf.WriteString(fmt.Sprintf("* [%s](%s)\t - %s\n", pname, linkHandler(link), parent.Short))
fmt.Fprintf(buf, "* [%s](%s)\t - %s\n", pname, linkHandler(link), parent.Short)
cmd.VisitParents(func(c *cobra.Command) {
if c.DisableAutoGenTag {
cmd.DisableAutoGenTag = c.DisableAutoGenTag
Expand All @@ -105,7 +105,7 @@ func GenMarkdownCustom(cmd *cobra.Command, w io.Writer, linkHandler func(string)
cname := name + " " + child.Name()
link := cname + markdownExtension
link = strings.ReplaceAll(link, " ", "_")
buf.WriteString(fmt.Sprintf("* [%s](%s)\t - %s\n", cname, linkHandler(link), child.Short))
fmt.Fprintf(buf, "* [%s](%s)\t - %s\n", cname, linkHandler(link), child.Short)
}
buf.WriteString("\n")
}
Expand Down
8 changes: 4 additions & 4 deletions doc/rest_docs.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,13 +82,13 @@ func GenReSTCustom(cmd *cobra.Command, w io.Writer, linkHandler func(string, str
buf.WriteString("\n" + long + "\n\n")

if cmd.Runnable() {
buf.WriteString(fmt.Sprintf("::\n\n %s\n\n", cmd.UseLine()))
fmt.Fprintf(buf, "::\n\n %s\n\n", cmd.UseLine())
}

if len(cmd.Example) > 0 {
buf.WriteString("Examples\n")
buf.WriteString("~~~~~~~~\n\n")
buf.WriteString(fmt.Sprintf("::\n\n%s\n\n", indentString(cmd.Example, " ")))
fmt.Fprintf(buf, "::\n\n%s\n\n", indentString(cmd.Example, " "))
}

if err := printOptionsReST(buf, cmd, name); err != nil {
Expand All @@ -101,7 +101,7 @@ func GenReSTCustom(cmd *cobra.Command, w io.Writer, linkHandler func(string, str
parent := cmd.Parent()
pname := parent.CommandPath()
ref = strings.ReplaceAll(pname, " ", "_")
buf.WriteString(fmt.Sprintf("* %s \t - %s\n", linkHandler(pname, ref), parent.Short))
fmt.Fprintf(buf, "* %s \t - %s\n", linkHandler(pname, ref), parent.Short)
cmd.VisitParents(func(c *cobra.Command) {
if c.DisableAutoGenTag {
cmd.DisableAutoGenTag = c.DisableAutoGenTag
Expand All @@ -118,7 +118,7 @@ func GenReSTCustom(cmd *cobra.Command, w io.Writer, linkHandler func(string, str
}
cname := name + " " + child.Name()
ref = strings.ReplaceAll(cname, " ", "_")
buf.WriteString(fmt.Sprintf("* %s \t - %s\n", linkHandler(cname, ref), child.Short))
fmt.Fprintf(buf, "* %s \t - %s\n", linkHandler(cname, ref), child.Short)
}
buf.WriteString("\n")
}
Expand Down
2 changes: 1 addition & 1 deletion doc/yaml_docs.go
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ func genFlagResult(flags *pflag.FlagSet) []cmdOption {
// Todo, when we mark a shorthand is deprecated, but specify an empty message.
// The flag.ShorthandDeprecated is empty as the shorthand is deprecated.
// Using len(flag.ShorthandDeprecated) > 0 can't handle this, others are ok.
if !(len(flag.ShorthandDeprecated) > 0) && len(flag.Shorthand) > 0 {
if len(flag.ShorthandDeprecated) == 0 && len(flag.Shorthand) > 0 {
opt := cmdOption{
flag.Name,
flag.Shorthand,
Expand Down
Loading