From 92a5753d8b28fda1d64884feb8d490901ddcac59 Mon Sep 17 00:00:00 2001 From: Oleksandr Redko Date: Wed, 25 Dec 2024 13:35:58 +0200 Subject: [PATCH 1/2] dev: improve --presets and --out-format flags help --- pkg/commands/flagsets.go | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/pkg/commands/flagsets.go b/pkg/commands/flagsets.go index 608f6b9de581..09b8c858c260 100644 --- a/pkg/commands/flagsets.go +++ b/pkg/commands/flagsets.go @@ -27,12 +27,7 @@ func setupLintersFlagSet(v *viper.Viper, fs *pflag.FlagSet) { internal.AddFlagAndBind(v, fs, fs.Bool, "fast", "linters.fast", false, color.GreenString("Enable only fast linters from enabled linters set (first run won't be fast)")) - internal.AddHackedStringSliceP(fs, "presets", "p", - color.GreenString(fmt.Sprintf("Enable presets (%s) of linters.\n"+ - "Run 'golangci-lint help linters' to see them.\n"+ - "This option implies option --disable-all", - strings.Join(lintersdb.AllPresets(), "|"), - ))) + internal.AddHackedStringSliceP(fs, "presets", "p", getPresetsHelp()) fs.StringSlice("enable-only", nil, color.GreenString("Override linters configuration section to only run the specific linter(s)")) // Flags only. @@ -68,8 +63,7 @@ func setupRunFlagSet(v *viper.Viper, fs *pflag.FlagSet) { } func setupOutputFlagSet(v *viper.Viper, fs *pflag.FlagSet) { - internal.AddFlagAndBind(v, fs, fs.String, "out-format", "output.formats", config.OutFormatColoredLineNumber, - color.GreenString(fmt.Sprintf("Formats of output: %s", strings.Join(config.AllOutputFormats, "|")))) + internal.AddFlagAndBind(v, fs, fs.String, "out-format", "output.formats", config.OutFormatColoredLineNumber, getOutFormatHelp()) internal.AddFlagAndBind(v, fs, fs.Bool, "print-issued-lines", "output.print-issued-lines", true, color.GreenString("Print lines of code with issue")) internal.AddFlagAndBind(v, fs, fs.Bool, "print-linter-name", "output.print-linter-name", true, @@ -123,6 +117,25 @@ func setupIssuesFlagSet(v *viper.Viper, fs *pflag.FlagSet) { color.GreenString("Fix found issues (if it's supported by the linter)")) } +func getPresetsHelp() string { + parts := []string{color.GreenString("Enable presets of linters:")} + for _, p := range lintersdb.AllPresets() { + parts = append(parts, fmt.Sprintf(" - %s", color.YellowString(p))) + } + parts = append(parts, color.GreenString("Run 'golangci-lint help linters' to see them."), + color.GreenString("This option implies option --disable-all")) + return strings.Join(parts, "\n") +} + +func getOutFormatHelp() string { + parts := []string{color.GreenString("Formats of output:")} + for _, f := range config.AllOutputFormats { + parts = append(parts, fmt.Sprintf(" - %s", color.YellowString(f))) + } + parts = append(parts, "") + return strings.Join(parts, "\n") +} + func getDefaultIssueExcludeHelp() string { parts := []string{color.GreenString("Use or not use default excludes:")} From 5b9ce17f19976efbfa7960fd47e50a8ec1904599 Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic Date: Wed, 25 Dec 2024 12:57:19 +0100 Subject: [PATCH 2/2] review --- pkg/commands/flagsets.go | 45 ++++++++++++++++++---------------------- 1 file changed, 20 insertions(+), 25 deletions(-) diff --git a/pkg/commands/flagsets.go b/pkg/commands/flagsets.go index 09b8c858c260..8823134528dd 100644 --- a/pkg/commands/flagsets.go +++ b/pkg/commands/flagsets.go @@ -27,7 +27,12 @@ func setupLintersFlagSet(v *viper.Viper, fs *pflag.FlagSet) { internal.AddFlagAndBind(v, fs, fs.Bool, "fast", "linters.fast", false, color.GreenString("Enable only fast linters from enabled linters set (first run won't be fast)")) - internal.AddHackedStringSliceP(fs, "presets", "p", getPresetsHelp()) + internal.AddHackedStringSliceP(fs, "presets", "p", + formatList("Enable presets of linters:", lintersdb.AllPresets(), + "Run 'golangci-lint help linters' to see them.", + "This option implies option --disable-all", + ), + ) fs.StringSlice("enable-only", nil, color.GreenString("Override linters configuration section to only run the specific linter(s)")) // Flags only. @@ -51,7 +56,7 @@ func setupRunFlagSet(v *viper.Viper, fs *pflag.FlagSet) { internal.AddDeprecatedHackedStringSlice(fs, "skip-files", color.GreenString("Regexps of files to skip")) internal.AddDeprecatedHackedStringSlice(fs, "skip-dirs", color.GreenString("Regexps of directories to skip")) internal.AddDeprecatedFlagAndBind(v, fs, fs.Bool, "skip-dirs-use-default", "run.skip-dirs-use-default", true, - getDefaultDirectoryExcludeHelp()) + formatList("Use or not use default excluded directories:", processors.StdExcludeDirRegexps)) const allowParallelDesc = "Allow multiple parallel golangci-lint instances running.\n" + "If false (default) - golangci-lint acquires file lock on start." @@ -63,7 +68,8 @@ func setupRunFlagSet(v *viper.Viper, fs *pflag.FlagSet) { } func setupOutputFlagSet(v *viper.Viper, fs *pflag.FlagSet) { - internal.AddFlagAndBind(v, fs, fs.String, "out-format", "output.formats", config.OutFormatColoredLineNumber, getOutFormatHelp()) + internal.AddFlagAndBind(v, fs, fs.String, "out-format", "output.formats", config.OutFormatColoredLineNumber, + formatList("Formats of output:", config.AllOutputFormats)) internal.AddFlagAndBind(v, fs, fs.Bool, "print-issued-lines", "output.print-issued-lines", true, color.GreenString("Print lines of code with issue")) internal.AddFlagAndBind(v, fs, fs.Bool, "print-linter-name", "output.print-linter-name", true, @@ -95,7 +101,7 @@ func setupIssuesFlagSet(v *viper.Viper, fs *pflag.FlagSet) { internal.AddHackedStringSlice(fs, "exclude-files", color.GreenString("Regexps of files to exclude")) internal.AddHackedStringSlice(fs, "exclude-dirs", color.GreenString("Regexps of directories to exclude")) internal.AddFlagAndBind(v, fs, fs.Bool, "exclude-dirs-use-default", "issues.exclude-dirs-use-default", true, - getDefaultDirectoryExcludeHelp()) + formatList("Use or not use default excluded directories:", processors.StdExcludeDirRegexps)) internal.AddFlagAndBind(v, fs, fs.String, "exclude-generated", "issues.exclude-generated", processors.AutogeneratedModeLax, color.GreenString("Mode of the generated files analysis")) @@ -117,22 +123,20 @@ func setupIssuesFlagSet(v *viper.Viper, fs *pflag.FlagSet) { color.GreenString("Fix found issues (if it's supported by the linter)")) } -func getPresetsHelp() string { - parts := []string{color.GreenString("Enable presets of linters:")} - for _, p := range lintersdb.AllPresets() { +func formatList(head string, items []string, foot ...string) string { + parts := []string{color.GreenString(head)} + for _, p := range items { parts = append(parts, fmt.Sprintf(" - %s", color.YellowString(p))) } - parts = append(parts, color.GreenString("Run 'golangci-lint help linters' to see them."), - color.GreenString("This option implies option --disable-all")) - return strings.Join(parts, "\n") -} -func getOutFormatHelp() string { - parts := []string{color.GreenString("Formats of output:")} - for _, f := range config.AllOutputFormats { - parts = append(parts, fmt.Sprintf(" - %s", color.YellowString(f))) + for _, s := range foot { + parts = append(parts, color.GreenString(s)) } - parts = append(parts, "") + + if len(foot) == 0 { + parts = append(parts, "") + } + return strings.Join(parts, "\n") } @@ -148,12 +152,3 @@ func getDefaultIssueExcludeHelp() string { return strings.Join(parts, "\n") } - -func getDefaultDirectoryExcludeHelp() string { - parts := []string{color.GreenString("Use or not use default excluded directories:")} - for _, dir := range processors.StdExcludeDirRegexps { - parts = append(parts, fmt.Sprintf(" - %s", color.YellowString(dir))) - } - parts = append(parts, "") - return strings.Join(parts, "\n") -}