58 lines
953 B
Go
58 lines
953 B
Go
package config
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"github.com/BurntSushi/toml"
|
|
)
|
|
|
|
type Config struct {
|
|
Path string `toml:"-"`
|
|
General GeneralConfig `toml:"general"`
|
|
Theme ThemeConfig `toml:"theme"`
|
|
Keys KeysConfig `toml:"keys"`
|
|
}
|
|
|
|
func New() *Config {
|
|
return &Config{
|
|
Path: DefaultPath(),
|
|
General: newGeneralConfig(),
|
|
Theme: newThemeConfig(),
|
|
Keys: newKeysConfig(),
|
|
}
|
|
}
|
|
|
|
func (c *Config) Load() {
|
|
err := os.MkdirAll(filepath.Dir(c.Path), os.ModePerm)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
if _, err = os.Stat(c.Path); os.IsNotExist(err) {
|
|
f, err := os.Create(c.Path)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
err = toml.NewEncoder(f).Encode(c)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
} else {
|
|
_, err = toml.DecodeFile(c.Path, &c)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
}
|
|
|
|
func DefaultPath() string {
|
|
path, err := os.UserConfigDir()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
path += "/discordo/config.toml"
|
|
return path
|
|
}
|