wails-app-dock/pkg/config/toml/config.go

51 lines
849 B
Go
Raw Normal View History

2024-02-17 21:45:43 +08:00
package toml
import (
"github.com/pelletier/go-toml/v2"
"os"
"path/filepath"
"skapp/pkg/logger"
"skapp/pkg/config"
)
func LoadConfig() (*config.Config, error) {
p, _ := filepath.Abs("./config.toml")
logger.Log.Infof("配置文件路径 %s", p)
flag := os.O_RDWR
_, err := os.Stat(p)
exist := !os.IsNotExist(err)
if !exist {
f, err := os.OpenFile(p, flag|os.O_CREATE, 0644)
if err != nil {
return nil, err
}
defer func() {
_ = f.Close()
}()
encoder := toml.NewEncoder(f)
encoder.SetIndentTables(true)
_ = encoder.Encode(config.DefaultConfig())
_ = f.Sync()
}
f, err := os.OpenFile(p, flag, 0644)
if err != nil {
return nil, err
}
defer func() {
_ = f.Close()
}()
c := &config.Config{}
decoder := toml.NewDecoder(f)
err = decoder.Decode(c)
if err != nil {
return nil, err
}
return c, nil
}