73 lines
1.2 KiB
Go
73 lines
1.2 KiB
Go
![]() |
package args
|
||
|
|
||
|
import (
|
||
|
"os"
|
||
|
|
||
|
"github.com/knadh/koanf/parsers/yaml"
|
||
|
"github.com/knadh/koanf/providers/file"
|
||
|
"github.com/knadh/koanf/v2"
|
||
|
"github.com/opentdp/go-helper/filer"
|
||
|
"github.com/opentdp/go-helper/logman"
|
||
|
)
|
||
|
|
||
|
// 配置信息操作类
|
||
|
|
||
|
type Config struct {
|
||
|
Koanf *koanf.Koanf
|
||
|
Parser *yaml.YAML
|
||
|
File string
|
||
|
}
|
||
|
|
||
|
func (c *Config) Init() *Config {
|
||
|
|
||
|
debug := os.Getenv("TDP_DEBUG")
|
||
|
Debug = debug == "1" || debug == "true"
|
||
|
|
||
|
c.Koanf = koanf.NewWithConf(koanf.Conf{
|
||
|
StrictMerge: true,
|
||
|
Delim: ".",
|
||
|
})
|
||
|
c.Parser = yaml.Parser()
|
||
|
c.File = "config.yml"
|
||
|
|
||
|
return c
|
||
|
|
||
|
}
|
||
|
|
||
|
func (c *Config) ReadYaml() {
|
||
|
|
||
|
// 配置不存在则忽略
|
||
|
_, err := os.Stat(c.File)
|
||
|
if os.IsNotExist(err) {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// 从配置文件读取参数
|
||
|
err = c.Koanf.Load(file.Provider(c.File), c.Parser)
|
||
|
if err != nil {
|
||
|
logman.Fatal("read config error", "error", err)
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
func (c *Config) WriteYaml() {
|
||
|
|
||
|
// 是否强制覆盖
|
||
|
if filer.Exists(c.File) {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// 序列化参数信息
|
||
|
buf, err := c.Koanf.Marshal(c.Parser)
|
||
|
if err != nil {
|
||
|
logman.Fatal("write config error", "error", err)
|
||
|
}
|
||
|
|
||
|
// 将参数写入配置文件
|
||
|
err = os.WriteFile(c.File, buf, 0644)
|
||
|
if err != nil {
|
||
|
logman.Fatal("write config error", "error", err)
|
||
|
}
|
||
|
|
||
|
}
|