github.com/songshiyun/revive@v1.1.5-0.20220323112655-f8433a19b3c5/cli/embed.go (about)

     1  package cli
     2  
     3  import (
     4  	"embed"
     5  	"github.com/songshiyun/revive/config"
     6  	"github.com/songshiyun/revive/lint"
     7  )
     8  
     9  //go:embed revive.toml
    10  var defaultConfFile embed.FS
    11  
    12  func loadDefaultConf() (*lint.Config, error) {
    13  	res, err := defaultConfFile.ReadFile("revive.toml")
    14  	if err != nil {
    15  		return nil, err
    16  	}
    17  	c, err := config.LoadDefaultConfig(res)
    18  	if err != nil {
    19  		return nil, err
    20  	}
    21  	return c, nil
    22  }
    23  
    24  func mergeConf() (*lint.Config, error) {
    25  	conf, err := loadDefaultConf()
    26  	if err != nil {
    27  		return nil, err
    28  	}
    29  	if configPath == "" {
    30  		return conf, nil
    31  	}
    32  	conf1, err := config.GetConfig(configPath)
    33  	if err != nil {
    34  		return conf, err
    35  	}
    36  	mergeConfItem(conf, conf1)
    37  	return conf, nil
    38  }
    39  
    40  func mergeConfItem(conf1, conf2 *lint.Config) {
    41  	if conf1.IgnoreGeneratedHeader != conf2.IgnoreGeneratedHeader {
    42  		conf1.IgnoreGeneratedHeader = conf2.IgnoreGeneratedHeader
    43  	}
    44  	// 先简单merge rule
    45  	for k, v := range conf2.Rules {
    46  		conf1.Rules[k] = v
    47  	}
    48  	return
    49  }