discordo/config/mod.go
2022-02-24 19:14:38 +04:00

62 lines
953 B
Go

package config
import (
"os"
"path/filepath"
"github.com/BurntSushi/toml"
)
type Config struct {
Keybindings KeybindingsConfig `toml:"keybindings"`
General GeneralConfig `toml:"general"`
}
func newConfig() Config {
return Config{
General: newGeneralConfig(),
Keybindings: newKeybindingsConfig(),
}
}
func NewConfig() *Config {
path, err := os.UserConfigDir()
if err != nil {
panic(err)
}
path += "/discordo/config.toml"
err = os.MkdirAll(filepath.Dir(path), os.ModePerm)
if err != nil {
panic(err)
}
f, err := os.Open(path)
if err != nil {
panic(err)
}
defer f.Close()
var c Config
if _, err = f.Stat(); os.IsNotExist(err) {
f, err = os.Create(path)
if err != nil {
panic(err)
}
defer f.Close()
c = newConfig()
err = toml.NewEncoder(f).Encode(c)
if err != nil {
panic(err)
}
} else {
_, err = toml.NewDecoder(f).Decode(&c)
if err != nil {
panic(err)
}
}
return &c
}