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 }