72 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package config
 | |
| 
 | |
| import (
 | |
| 	"os"
 | |
| 	"strings"
 | |
| 
 | |
| 	hcversion "github.com/hashicorp/go-version"
 | |
| 	"github.com/ldez/gomoddirectives"
 | |
| )
 | |
| 
 | |
| // Config encapsulates the config data specified in the golangci yaml config file.
 | |
| type Config struct {
 | |
| 	cfgDir string // The directory containing the golangci config file.
 | |
| 	Run    Run
 | |
| 
 | |
| 	Output Output
 | |
| 
 | |
| 	LintersSettings LintersSettings `mapstructure:"linters-settings"`
 | |
| 	Linters         Linters
 | |
| 	Issues          Issues
 | |
| 	Severity        Severity
 | |
| 	Version         Version
 | |
| 
 | |
| 	InternalCmdTest bool `mapstructure:"internal-cmd-test"` // Option is used only for testing golangci-lint command, don't use it
 | |
| 	InternalTest    bool // Option is used only for testing golangci-lint code, don't use it
 | |
| }
 | |
| 
 | |
| // GetConfigDir returns the directory that contains golangci config file.
 | |
| func (c *Config) GetConfigDir() string {
 | |
| 	return c.cfgDir
 | |
| }
 | |
| 
 | |
| func NewDefault() *Config {
 | |
| 	return &Config{
 | |
| 		LintersSettings: defaultLintersSettings,
 | |
| 	}
 | |
| }
 | |
| 
 | |
| type Version struct {
 | |
| 	Format string `mapstructure:"format"`
 | |
| 	Debug  bool   `mapstructure:"debug"`
 | |
| }
 | |
| 
 | |
| func IsGreaterThanOrEqualGo118(v string) bool {
 | |
| 	v1, err := hcversion.NewVersion(strings.TrimPrefix(v, "go"))
 | |
| 	if err != nil {
 | |
| 		return false
 | |
| 	}
 | |
| 
 | |
| 	limit, err := hcversion.NewVersion("1.18")
 | |
| 	if err != nil {
 | |
| 		return false
 | |
| 	}
 | |
| 
 | |
| 	return v1.GreaterThanOrEqual(limit)
 | |
| }
 | |
| 
 | |
| func DetectGoVersion() string {
 | |
| 	file, _ := gomoddirectives.GetModuleFile()
 | |
| 
 | |
| 	if file != nil && file.Go != nil && file.Go.Version != "" {
 | |
| 		return file.Go.Version
 | |
| 	}
 | |
| 
 | |
| 	v := os.Getenv("GOVERSION")
 | |
| 	if v != "" {
 | |
| 		return v
 | |
| 	}
 | |
| 
 | |
| 	return "1.17"
 | |
| }
 | 
