github.com/ferretdb/golangci-lint@v1.10.1/pkg/commands/help.go (about)

     1  package commands
     2  
     3  import (
     4  	"fmt"
     5  	"os"
     6  	"strings"
     7  
     8  	"github.com/fatih/color"
     9  	"github.com/golangci/golangci-lint/pkg/lint/linter"
    10  	"github.com/golangci/golangci-lint/pkg/lint/lintersdb"
    11  	"github.com/golangci/golangci-lint/pkg/logutils"
    12  	"github.com/spf13/cobra"
    13  )
    14  
    15  func (e *Executor) initHelp() {
    16  	helpCmd := &cobra.Command{
    17  		Use:   "help",
    18  		Short: "Help",
    19  		Run: func(cmd *cobra.Command, args []string) {
    20  			if err := cmd.Help(); err != nil {
    21  				e.log.Fatalf("Can't run help: %s", err)
    22  			}
    23  		},
    24  	}
    25  	e.rootCmd.AddCommand(helpCmd)
    26  
    27  	lintersHelpCmd := &cobra.Command{
    28  		Use:   "linters",
    29  		Short: "Help about linters",
    30  		Run:   e.executeLintersHelp,
    31  	}
    32  	helpCmd.AddCommand(lintersHelpCmd)
    33  }
    34  
    35  func printLinterConfigs(lcs []linter.Config) {
    36  	for _, lc := range lcs {
    37  		fmt.Fprintf(logutils.StdOut, "%s: %s [fast: %t]\n", color.YellowString(lc.Linter.Name()),
    38  			lc.Linter.Desc(), !lc.DoesFullImport)
    39  	}
    40  }
    41  
    42  func (e Executor) executeLintersHelp(cmd *cobra.Command, args []string) {
    43  	var enabledLCs, disabledLCs []linter.Config
    44  	for _, lc := range lintersdb.GetAllSupportedLinterConfigs() {
    45  		if lc.EnabledByDefault {
    46  			enabledLCs = append(enabledLCs, lc)
    47  		} else {
    48  			disabledLCs = append(disabledLCs, lc)
    49  		}
    50  	}
    51  
    52  	color.Green("Enabled by default linters:\n")
    53  	printLinterConfigs(enabledLCs)
    54  	color.Red("\nDisabled by default linters:\n")
    55  	printLinterConfigs(disabledLCs)
    56  
    57  	color.Green("\nLinters presets:")
    58  	for _, p := range lintersdb.AllPresets() {
    59  		linters := lintersdb.GetAllLinterConfigsForPreset(p)
    60  		linterNames := []string{}
    61  		for _, lc := range linters {
    62  			linterNames = append(linterNames, lc.Linter.Name())
    63  		}
    64  		fmt.Fprintf(logutils.StdOut, "%s: %s\n", color.YellowString(p), strings.Join(linterNames, ", "))
    65  	}
    66  
    67  	os.Exit(0)
    68  }