数据接收指针数据clone并初始化
This commit is contained in:
parent
d0dc0fba97
commit
8cf014ac0a
12
define.go
12
define.go
@ -16,11 +16,11 @@ package config
|
|||||||
// 默认配置文件路径配置, 配置文件路径及类型也可通过命令行参数指定. 支持属性如下:
|
// 默认配置文件路径配置, 配置文件路径及类型也可通过命令行参数指定. 支持属性如下:
|
||||||
// - config-type(dct) : 配置文件类型 ini / json / yml / yaml / toml , 默认值:空字符串,会根据传入配置文件后缀自行判断
|
// - config-type(dct) : 配置文件类型 ini / json / yml / yaml / toml , 默认值:空字符串,会根据传入配置文件后缀自行判断
|
||||||
// - config-path(dcp) : 配置文件路径, 传入绝对路径,则使用绝对路径读取,传入相对路径,则自动在服务运行的根目录下进行文件查找
|
// - config-path(dcp) : 配置文件路径, 传入绝对路径,则使用绝对路径读取,传入相对路径,则自动在服务运行的根目录下进行文件查找
|
||||||
// - parse-sort(dps) : 配置文件解析的优先级,分隔 , 排在前面的优先级高, eg : cli,env,param
|
// - parse-sort(dps) : 默认值 : cli,env,param 配置文件解析的优先级,分隔 , 排在前面的优先级高
|
||||||
// - env-file(def) : 环境变量文件路径, 传入绝对路径,则使用绝对路径读取,传入相对路径,则自动在服务运行的根目录下进行文件查找s
|
// - env-file(def) : 默认值 : .env 环境变量文件路径, 传入绝对路径,则使用绝对路径读取,传入相对路径,则自动在服务运行的根目录下进行文件查找
|
||||||
type DefaultConfig struct {
|
type DefaultConfig struct {
|
||||||
ConfigType string `short:"dct" long:"config-type" json:"config_type" ini:"config_type" yaml:"config_type" toml:"config_type" description:"配置文件类型 : ini / json / yml / yaml / toml , 默认值:空字符串,会根据传入配置文件后缀自行判断"`
|
ConfigType string `short:"dct" long:"config-type" default:"" json:"config_type" ini:"config_type" yaml:"config_type" toml:"config_type" description:"配置文件类型 : ini / json / yml / yaml / toml , 默认值:空字符串,会根据传入配置文件后缀自行判断"`
|
||||||
ConfigPath string `short:"dcp" long:"config-path" json:"config_path" ini:"config_path" yaml:"config_path" toml:"config_path" description:"配置文件路径, 传入绝对路径,则使用绝对路径读取,传入相对路径,则自动在服务运行的根目录下进行文件查找"`
|
ConfigPath string `short:"dcp" long:"config-path" default:"" json:"config_path" ini:"config_path" yaml:"config_path" toml:"config_path" description:"配置文件路径, 传入绝对路径,则使用绝对路径读取,传入相对路径,则自动在服务运行的根目录下进行文件查找"`
|
||||||
ParseSort string `short:"dps" long:"parse-sort" json:"parse_sort" ini:"parse_sort" yaml:"parse_sort" toml:"parse_sort" description:"参数解析优先级,支持 : cli/env/file"`
|
ParseSort string `short:"dps" long:"parse-sort" default:"cli,env,param" json:"parse_sort" ini:"parse_sort" yaml:"parse_sort" toml:"parse_sort" description:"参数解析优先级,支持 : cli/env/file"`
|
||||||
EnvFile string `short:"def" long:"env-file" json:"env_file" ini:"env_file" yaml:"env_file" toml:"env_file" description:"环境变量文件路径, 传入绝对路径,则使用绝对路径读取,传入相对路径,则自动在服务运行的根目录下进行文件查找"`
|
EnvFile string `short:"def" long:"env-file" default:".env" json:"env_file" ini:"env_file" yaml:"env_file" toml:"env_file" description:"环境变量文件路径, 传入绝对路径,则使用绝对路径读取,传入相对路径,则自动在服务运行的根目录下进行文件查找"`
|
||||||
}
|
}
|
||||||
|
32
init.go
32
init.go
@ -8,7 +8,9 @@
|
|||||||
package config
|
package config
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"github.com/jessevdk/go-flags"
|
"github.com/jessevdk/go-flags"
|
||||||
|
"reflect"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Init 初始化配置
|
// Init 初始化配置
|
||||||
@ -21,8 +23,38 @@ func Init(configReceiver any) error {
|
|||||||
err error
|
err error
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if err = checkConfigReceiver(configReceiver); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
if _, err = flags.Parse(configReceiver); nil != err {
|
if _, err = flags.Parse(configReceiver); nil != err {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// checkConfigReceiver 校验配置接收者必须是指针
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 17:16 2024/11/5
|
||||||
|
func checkConfigReceiver(configReceiver any) error {
|
||||||
|
if nil == configReceiver {
|
||||||
|
return errors.New("config receiver is nil")
|
||||||
|
}
|
||||||
|
receiverType := reflect.TypeOf(configReceiver)
|
||||||
|
if receiverType.Kind() != reflect.Ptr {
|
||||||
|
return errors.New("config receiver is not a pointer")
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// cloneReceiver ...
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 17:16 2024/11/5
|
||||||
|
func cloneReceiver(configReceiver any) any {
|
||||||
|
dataType := reflect.TypeOf(configReceiver).Elem()
|
||||||
|
return reflect.New(dataType).Interface()
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user