From 8a2e8dc6712a53fa79f1fe0e8722f3d0a926af10 Mon Sep 17 00:00:00 2001 From: Tom Fleet Date: Sat, 27 Sep 2025 10:17:25 +0100 Subject: [PATCH 1/2] Tweak lint/format rules --- .golangci.yml | 6 ++++++ Taskfile.yml | 3 ++- internal/flag/set_test.go | 5 +++++ internal/table/table.go | 2 ++ 4 files changed, 15 insertions(+), 1 deletion(-) diff --git a/.golangci.yml b/.golangci.yml index 7e6ebfb..7b27cf2 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -4,11 +4,17 @@ formatters: enable: - gofumpt - goimports + - golines settings: gofumpt: extra-rules: true + golines: + max-len: 140 + shorten-comments: true + reformat-tags: true + linters: default: all disable: diff --git a/Taskfile.yml b/Taskfile.yml index 96926ae..540398f 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -25,8 +25,9 @@ tasks: desc: Run go fmt on all source files sources: - "**/*.go" + - .golangci.yml cmds: - - go fmt ./... + - golangci-lint fmt ./... test: desc: Run the test suite diff --git a/internal/flag/set_test.go b/internal/flag/set_test.go index b129513..bc418db 100644 --- a/internal/flag/set_test.go +++ b/internal/flag/set_test.go @@ -948,6 +948,7 @@ func TestFlagSet(t *testing.T) { err = flag.AddToSet(set, f) test.Err(t, err) + if err != nil { test.Equal(t, err.Error(), "cannot add flag to a nil set") } @@ -961,6 +962,7 @@ func TestFlagSet(t *testing.T) { test: func(t *testing.T, set *flag.Set) { err := set.Parse([]string{"args", "here", "doesn't", "matter"}) test.Err(t, err) + if err != nil { test.Equal(t, err.Error(), "Parse called on a nil set") } @@ -990,6 +992,7 @@ func TestFlagSet(t *testing.T) { // Add the same flag again err = flag.AddToSet(set, f) test.Err(t, err) + if err != nil { test.Equal(t, err.Error(), `flag "count" already defined`) } @@ -1013,6 +1016,7 @@ func TestFlagSet(t *testing.T) { // Add the different flag with the same na,e err = flag.AddToSet(set, f2) test.Err(t, err) + if err != nil { test.Equal(t, err.Error(), `flag "count" already defined`) } @@ -1036,6 +1040,7 @@ func TestFlagSet(t *testing.T) { // Add the different flag with the same na,e err = flag.AddToSet(set, f2) test.Err(t, err) + if err != nil { test.Equal(t, err.Error(), `shorthand "c" already in use for flag "count"`) } diff --git a/internal/table/table.go b/internal/table/table.go index a9432d3..9654471 100644 --- a/internal/table/table.go +++ b/internal/table/table.go @@ -30,6 +30,8 @@ func New(w io.Writer) Table { } // Row adds a row to the [Table]. +// +//nolint:goprintffuncname // I like it this way func (t Table) Row(format string, a ...any) { fmt.Fprintf(t.tw, format, a...) } From 17bac1f4910d0c0958ac0c74948f2e8135008a5d Mon Sep 17 00:00:00 2001 From: Tom Fleet Date: Sat, 27 Sep 2025 10:22:01 +0100 Subject: [PATCH 2/2] Add extra padding in subcommand section --- Taskfile.yml | 2 +- command.go | 2 +- .../snapshots/TestHelp/subcommands_different_lengths.snap.txt | 1 + testdata/snapshots/TestHelp/with_subcommands.snap.txt | 1 + testdata/snapshots/TestHelp/with_subcommands_and_flags.snap.txt | 1 + 5 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Taskfile.yml b/Taskfile.yml index 540398f..2fb2d30 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -33,7 +33,7 @@ tasks: desc: Run the test suite sources: - "**/*.go" - - testdata/**/*.txt + - "**/testdata/**/*" - go.mod - go.sum cmds: diff --git a/command.go b/command.go index 11f51c3..a446845 100644 --- a/command.go +++ b/command.go @@ -674,7 +674,7 @@ func writeSubcommands(cmd *Command, s *strings.Builder) error { s.WriteString(colour.Title("Commands")) s.WriteByte(':') - s.WriteByte('\n') + s.WriteString("\n\n") tab := table.New(s) for _, subcommand := range cmd.subcommands { diff --git a/testdata/snapshots/TestHelp/subcommands_different_lengths.snap.txt b/testdata/snapshots/TestHelp/subcommands_different_lengths.snap.txt index 27f444f..a6e0258 100644 --- a/testdata/snapshots/TestHelp/subcommands_different_lengths.snap.txt +++ b/testdata/snapshots/TestHelp/subcommands_different_lengths.snap.txt @@ -5,6 +5,7 @@ A longer, probably multiline description Usage: test [OPTIONS] COMMAND Commands: + sub1 Do one thing sub2 Do another thing very-long-subcommand Wow so long diff --git a/testdata/snapshots/TestHelp/with_subcommands.snap.txt b/testdata/snapshots/TestHelp/with_subcommands.snap.txt index 2b924c0..542e7fb 100644 --- a/testdata/snapshots/TestHelp/with_subcommands.snap.txt +++ b/testdata/snapshots/TestHelp/with_subcommands.snap.txt @@ -5,6 +5,7 @@ A longer, probably multiline description Usage: test [OPTIONS] COMMAND Commands: + sub1 Do one thing sub2 Do another thing diff --git a/testdata/snapshots/TestHelp/with_subcommands_and_flags.snap.txt b/testdata/snapshots/TestHelp/with_subcommands_and_flags.snap.txt index b30fb5f..0a335ed 100644 --- a/testdata/snapshots/TestHelp/with_subcommands_and_flags.snap.txt +++ b/testdata/snapshots/TestHelp/with_subcommands_and_flags.snap.txt @@ -5,6 +5,7 @@ A longer, probably multiline description Usage: test [OPTIONS] COMMAND Commands: + sub1 Do one thing sub2 Do another thing