36 lines
682 B
Go
36 lines
682 B
Go
package conf
|
|
|
|
import (
|
|
"os"
|
|
|
|
"github.com/pelletier/go-toml/v2"
|
|
)
|
|
|
|
// SetupConfig 从文件读取内容初始化配置
|
|
func SetupConfig(v any, path string) error {
|
|
b, err := os.ReadFile(path)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return toml.Unmarshal(b, v)
|
|
}
|
|
|
|
// WriteConfig 将配置写回文件
|
|
func WriteConfig(v any, path string) error {
|
|
tmp := path + ".tmp"
|
|
_ = os.RemoveAll(tmp)
|
|
|
|
f, err := os.OpenFile(tmp, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0o644)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer f.Close()
|
|
if err := toml.NewEncoder(f).SetIndentTables(true).Encode(v); err != nil {
|
|
return err
|
|
}
|
|
if err := f.Close(); err != nil {
|
|
return err
|
|
}
|
|
return os.Rename(tmp, path)
|
|
}
|