eudore config

实现config主要目标为了集成配置库,然后实现框架一体化,完美将配置融合到框架中,Config作为eudore.App的一部分然后全局传递。

Config主要方法未Get/Set来读写数据,和ParseFuncs和Parse来解析数据。

type (
    ConfigParseFunc func(Config) error
    ConfigParseOption func([]ConfigParseFunc) []ConfigParseFunc
    
    Config interface {
        Get(string) interface{}
        Set(string, interface{}) error
        ParseOption(ConfigParseOption)
        Parse() error
    }
)

ConfigMap

configmap使用map[string]interface{}作为配置存储。examplearrow-up-right

ConfigEuodre

configeudore使用自定义结构体来存储配置,如果Get/Set的key路径中含有'.'就会使用eudore.Get/eudore.Set方法来按路径一层层的选择对象属性。examplearrow-up-right

ConfigParse

type ConfigParseFunc func(Config) error定义了配置解析函数,通过加载配置解析函数来解析配置,在Config接口中,ParseFuncs方法来修改Config的解析函数,最后调用Parse来解析全部配置。

例如ParseFuncs追加解析函数,ParseFuncs参数是当前的解析函数,返回新的解析函数,最后安顺序执行解析行为。

目前Config默认内置了六个解析函数,后续按顺序介绍。

ConfigParseRead

使用keys.config 读取到配置信息,然后多种方式读取到并存储给keys.configdata,然后后续解析。

ConfigParseConfig

解析读取到的配置信息。

ConfigParseArgs

ConfigParseArgs函数解析命令行参数,必要是"--"开头,例如--keys.help=1,对应的执行函数就是c.Set("keys.help", "1"),来设置配置数据。

ConfigParseEnvs

ConfigParseEnvs解析环境变量配置,配置必须要"ENV"开头,例如ENV_KEYS_HELP=1,前缀ENV删除,后续配置路径转换成小写,'-'替换成'.',对于命令行是--keys.help=1,对应的执行函数就是c.Set("keys.help", "1")

ConfigParseMods

ConfigParseMods用于差异化配置,先获取enable的字符串数组的数组,表示启用那些模式,处理[]interface{}用于兼容。

然后读取对于的mods.xxx的数据,使用ConvertTo函数来加载对应的配置数据。

ConfigParseHelp

ConfigParseHelp的作用是输出当前配置信息,当前实现是检查keys.help key是否存在,存在则使用json输出到标准输出。

GetWarp

GetWarp提供封装func(string) interface{}类型函数实现,转换一个interface{}类型为指定类型,可以通过App或Config或func创建GetWarp对象,然后获取数据并转换类型。

Last updated