2023-02-28 09:56:20 +08:00
|
|
|
|
package config
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"bytes"
|
|
|
|
|
"os"
|
|
|
|
|
|
|
|
|
|
"github.com/spf13/viper"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
type AgentConfig struct {
|
2023-05-18 10:57:45 +08:00
|
|
|
|
Name string `yaml:"name,omitempty"`
|
|
|
|
|
Mode string `yaml:"mode,omitempty"`
|
|
|
|
|
Point string `yaml:"point"`
|
|
|
|
|
NodeType int `yaml:"nodeType"`
|
|
|
|
|
Delay int `yaml:"delay"`
|
|
|
|
|
Logging LogOptions `yaml:"logging"`
|
|
|
|
|
Node HpdsNode `yaml:"node,omitempty"`
|
|
|
|
|
Funcs []FuncConfig `yaml:"functions,omitempty"`
|
2023-02-28 09:56:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type FuncConfig struct {
|
|
|
|
|
Name string `yaml:"name"`
|
|
|
|
|
DataTag uint8 `yaml:"dataTag"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type HpdsNode struct {
|
|
|
|
|
Host string `yaml:"host"`
|
|
|
|
|
Port int `yaml:"port"`
|
|
|
|
|
Token string `yaml:"token,omitempty"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type LogOptions struct {
|
|
|
|
|
Path string `yaml:"path" json:"path" toml:"path"` // 文件保存地方
|
|
|
|
|
Prefix string `yaml:"prefix" json:"prefix" toml:"prefix"` // 日志文件前缀
|
|
|
|
|
ErrorFileSuffix string `yaml:"errorFileSuffix" json:"errorFileSuffix" toml:"errorFileSuffix"` // error日志文件后缀
|
|
|
|
|
WarnFileSuffix string `yaml:"warnFileSuffix" json:"warnFileSuffix" toml:"warnFileSuffix"` // warn日志文件后缀
|
|
|
|
|
InfoFileSuffix string `yaml:"infoFileSuffix" json:"infoFileSuffix" toml:"infoFileSuffix"` // info日志文件后缀
|
|
|
|
|
DebugFileSuffix string `yaml:"debugFileSuffix" json:"debugFileSuffix" toml:"debugFileSuffix"` // debug日志文件后缀
|
|
|
|
|
Level string `yaml:"level" json:"level" toml:"level"` // 日志等级
|
|
|
|
|
MaxSize int `yaml:"maxSize" json:"maxSize" toml:"maxSize"` // 日志文件大小(M)
|
|
|
|
|
MaxBackups int `yaml:"maxBackups" json:"maxBackups" toml:"maxBackups"` // 最多存在多少个切片文件
|
|
|
|
|
MaxAge int `yaml:"maxAge" json:"maxAge" toml:"maxAge"` // 保存的最大天数
|
|
|
|
|
Development bool `yaml:"development" json:"development" toml:"development"` // 是否是开发模式
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func ParseConfigByFile(path string) (cfg *AgentConfig, err error) {
|
|
|
|
|
buffer, err := os.ReadFile(path)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
return load(buffer)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func load(buf []byte) (cfg *AgentConfig, err error) {
|
|
|
|
|
cViper := viper.New()
|
|
|
|
|
cViper.SetConfigType("yaml")
|
|
|
|
|
cfg = new(AgentConfig)
|
|
|
|
|
cViper.ReadConfig(bytes.NewBuffer(buf))
|
|
|
|
|
err = cViper.Unmarshal(cfg)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
return
|
|
|
|
|
}
|