Skip to content

Commit 7b2fd9f

Browse files
committed
review: factorize
1 parent 5de9d08 commit 7b2fd9f

File tree

2 files changed

+40
-21
lines changed

2 files changed

+40
-21
lines changed

pkg/commands/flagsets.go

+13-21
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,18 @@ import (
1616
)
1717

1818
func setupLintersFlagSet(v *viper.Viper, fs *pflag.FlagSet) {
19-
fs.StringSliceP("disable", "D", nil, color.GreenString("Disable specific linter")) // Hack see Loader.applyStringSliceHack
19+
internal.AddHackedStringSliceP(fs, "disable", "D", color.GreenString("Disable specific linter"))
2020
internal.AddFlagAndBind(v, fs, fs.Bool, "disable-all", "linters.disable-all", false, color.GreenString("Disable all linters"))
2121

22-
fs.StringSliceP("enable", "E", nil, color.GreenString("Enable specific linter")) // Hack see Loader.applyStringSliceHack
22+
internal.AddHackedStringSliceP(fs, "enable", "E", color.GreenString("Enable specific linter"))
2323
internal.AddFlagAndBind(v, fs, fs.Bool, "enable-all", "linters.enable-all", false, color.GreenString("Enable all linters"))
2424

2525
internal.AddFlagAndBind(v, fs, fs.Bool, "fast", "linters.fast", false,
2626
color.GreenString("Enable only fast linters from enabled linters set (first run won't be fast)"))
2727

28-
// Hack see Loader.applyStringSliceHack
29-
fs.StringSliceP("presets", "p", nil,
30-
color.GreenString(fmt.Sprintf("Enable presets (%s) of linters. Run 'golangci-lint help linters' to see "+
31-
"them. This option implies option --disable-all", strings.Join(lintersdb.AllPresets(), "|"))))
28+
internal.AddHackedStringSliceP(fs, "presets", "p",
29+
color.GreenString(fmt.Sprintf("Enable presets (%s) of linters. Run 'golangci-lint help linters' to see them. "+
30+
"This option implies option --disable-all", strings.Join(lintersdb.AllPresets(), "|"))))
3231

3332
fs.StringSlice("enable-only", nil,
3433
color.GreenString("Override linters configuration section to only run the specific linter(s)")) // Flags only.
@@ -43,18 +42,16 @@ func setupRunFlagSet(v *viper.Viper, fs *pflag.FlagSet) {
4342
internal.AddFlagAndBind(v, fs, fs.Int, "issues-exit-code", "run.issues-exit-code", exitcodes.IssuesFound,
4443
color.GreenString("Exit code when issues were found"))
4544
internal.AddFlagAndBind(v, fs, fs.String, "go", "run.go", "", color.GreenString("Targeted Go version"))
46-
fs.StringSlice("build-tags", nil, color.GreenString("Build tags")) // Hack see Loader.applyStringSliceHack
45+
internal.AddHackedStringSlice(fs, "build-tags", color.GreenString("Build tags"))
4746

4847
internal.AddFlagAndBind(v, fs, fs.Duration, "timeout", "run.timeout", defaultTimeout, color.GreenString("Timeout for total work"))
4948

5049
internal.AddFlagAndBind(v, fs, fs.Bool, "tests", "run.tests", true, color.GreenString("Analyze tests (*_test.go)"))
5150

52-
fs.StringSlice("skip-files", nil, color.GreenString("Regexps of files to skip")) // Hack see Loader.applyStringSliceHack
53-
deprecateFlag(fs, "skip-files")
54-
fs.StringSlice("skip-dirs", nil, color.GreenString("Regexps of directories to skip")) // Hack see Loader.applyStringSliceHack
55-
deprecateFlag(fs, "skip-dirs")
56-
internal.AddFlagAndBind(v, fs, fs.Bool, "skip-dirs-use-default", "run.skip-dirs-use-default", true, getDefaultDirectoryExcludeHelp())
57-
deprecateFlag(fs, "skip-dirs-use-default")
51+
internal.AddDeprecatedHackedStringSlice(fs, "skip-files", color.GreenString("Regexps of files to skip"))
52+
internal.AddDeprecatedHackedStringSlice(fs, "skip-dirs", color.GreenString("Regexps of directories to skip"))
53+
internal.AddDeprecatedFlagAndBind(v, fs, fs.Bool, "skip-dirs-use-default", "run.skip-dirs-use-default", true,
54+
getDefaultDirectoryExcludeHelp())
5855

5956
const allowParallelDesc = "Allow multiple parallel golangci-lint instances running. " +
6057
"If false (default) - golangci-lint acquires file lock on start."
@@ -85,7 +82,7 @@ func setupOutputFlagSet(v *viper.Viper, fs *pflag.FlagSet) {
8582

8683
//nolint:gomnd
8784
func setupIssuesFlagSet(v *viper.Viper, fs *pflag.FlagSet) {
88-
fs.StringSliceP("exclude", "e", nil, color.GreenString("Exclude issue by regexp")) // Hack see Loader.applyStringSliceHack
85+
internal.AddHackedStringSliceP(fs, "exclude", "e", color.GreenString("Exclude issue by regexp"))
8986
internal.AddFlagAndBind(v, fs, fs.Bool, "exclude-use-default", "issues.exclude-use-default", true,
9087
getDefaultIssueExcludeHelp())
9188
internal.AddFlagAndBind(v, fs, fs.Bool, "exclude-case-sensitive", "issues.exclude-case-sensitive", false,
@@ -96,8 +93,8 @@ func setupIssuesFlagSet(v *viper.Viper, fs *pflag.FlagSet) {
9693
internal.AddFlagAndBind(v, fs, fs.Int, "max-same-issues", "issues.max-same-issues", 3,
9794
color.GreenString("Maximum count of issues with the same text. Set to 0 to disable"))
9895

99-
fs.StringSlice("exclude-files", nil, color.GreenString("Regexps of files to exclude")) // Hack see Loader.applyStringSliceHack
100-
fs.StringSlice("exclude-dirs", nil, color.GreenString("Regexps of directories to exclude")) // Hack see Loader.applyStringSliceHack
96+
internal.AddHackedStringSlice(fs, "exclude-files", color.GreenString("Regexps of files to exclude"))
97+
internal.AddHackedStringSlice(fs, "exclude-dirs", color.GreenString("Regexps of directories to exclude"))
10198
internal.AddFlagAndBind(v, fs, fs.Bool, "exclude-dirs-use-default", "issues.exclude-dirs-use-default", true,
10299
getDefaultDirectoryExcludeHelp())
103100

@@ -138,8 +135,3 @@ func getDefaultDirectoryExcludeHelp() string {
138135
parts = append(parts, "")
139136
return strings.Join(parts, "\n")
140137
}
141-
142-
func deprecateFlag(fs *pflag.FlagSet, name string) {
143-
_ = fs.MarkHidden(name)
144-
_ = fs.MarkDeprecated(name, "check the documentation for more information.")
145-
}

pkg/commands/internal/vibra.go

+27
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,30 @@ func AddFlagAndBindP[T any](v *viper.Viper, fs *pflag.FlagSet, pfn FlagPFunc[T],
3030
panic(fmt.Sprintf("failed to bind flag %s: %v", name, err))
3131
}
3232
}
33+
34+
// AddDeprecatedFlagAndBind similar to AddFlagAndBind but deprecate the flag.
35+
func AddDeprecatedFlagAndBind[T any](v *viper.Viper, fs *pflag.FlagSet, pfn FlagFunc[T], name, bind string, value T, usage string) {
36+
AddFlagAndBind(v, fs, pfn, name, bind, value, usage)
37+
deprecateFlag(fs, name)
38+
}
39+
40+
// AddHackedStringSliceP Hack for slice, see Loader.applyStringSliceHack.
41+
func AddHackedStringSliceP(fs *pflag.FlagSet, name, shorthand, usage string) {
42+
fs.StringSliceP(name, shorthand, nil, usage)
43+
}
44+
45+
// AddHackedStringSlice Hack for slice, see Loader.applyStringSliceHack.
46+
func AddHackedStringSlice(fs *pflag.FlagSet, name, usage string) {
47+
AddHackedStringSliceP(fs, name, "", usage)
48+
}
49+
50+
// AddDeprecatedHackedStringSlice similar to AddHackedStringSlice but deprecate the flag.
51+
func AddDeprecatedHackedStringSlice(fs *pflag.FlagSet, name, usage string) {
52+
AddHackedStringSlice(fs, name, usage)
53+
deprecateFlag(fs, name)
54+
}
55+
56+
func deprecateFlag(fs *pflag.FlagSet, name string) {
57+
_ = fs.MarkHidden(name)
58+
_ = fs.MarkDeprecated(name, "check the documentation for more information.")
59+
}

0 commit comments

Comments
 (0)