github.com/zly-app/zapp@v1.3.3/config/opts.go (about)

     1  /*
     2  -------------------------------------------------
     3     Author :       zlyuancn
     4     date:         2020/12/18
     5     Description :
     6  -------------------------------------------------
     7  */
     8  
     9  package config
    10  
    11  import (
    12  	"github.com/spf13/viper"
    13  
    14  	"github.com/zly-app/zapp/core"
    15  )
    16  
    17  type Option func(o *Options)
    18  
    19  type Options struct {
    20  	vi           *viper.Viper  // viper
    21  	conf         *core.Config  // 配置结构
    22  	files        []string      // 配置文件
    23  	apolloConfig *ApolloConfig // apollo配置结构
    24  }
    25  
    26  func newOptions() *Options {
    27  	return &Options{}
    28  }
    29  
    30  // 设置viper, 优先级低于从命令行指定配置文件
    31  func WithViper(vi *viper.Viper) Option {
    32  	return func(o *Options) {
    33  		o.vi = vi
    34  	}
    35  }
    36  
    37  // 主动设置配置结构, 优先级低于WithViper
    38  func WithConfig(conf *core.Config) Option {
    39  	return func(o *Options) {
    40  		o.conf = conf
    41  	}
    42  }
    43  
    44  // 主动设置配置文件, 优先级低于WithConfig
    45  func WithFiles(files ...string) Option {
    46  	return func(o *Options) {
    47  		o.files = files
    48  	}
    49  }
    50  
    51  // 从apollo加载配置, 必须是规范的设置
    52  func WithApollo(conf *ApolloConfig) Option {
    53  	return func(o *Options) {
    54  		o.apolloConfig = conf
    55  	}
    56  }