discordo/config.go
2022-12-30 20:05:26 +05:30

71 lines
1.2 KiB
Go

package main
import (
"encoding/json"
"os"
"path/filepath"
)
const name = "discordo"
type ThemeConfig struct {
BorderPadding [4]int
}
type Config struct {
Mouse bool
MessagesLimit uint
Theme ThemeConfig
}
func newConfig() (*Config, error) {
path, err := os.UserConfigDir()
if err != nil {
return nil, err
}
path = filepath.Join(path, name)
if err = os.MkdirAll(path, os.ModePerm); err != nil {
return nil, err
}
c := Config{
Mouse: true,
MessagesLimit: 50,
Theme: ThemeConfig{
BorderPadding: [...]int{1, 1, 1, 1},
},
}
path = filepath.Join(path, "config.json")
if _, err = os.Stat(path); os.IsNotExist(err) {
f, err := os.Create(path)
if err != nil {
return nil, err
}
defer f.Close()
e := json.NewEncoder(f)
e.SetIndent("", "\t")
if err = e.Encode(c); err != nil {
return nil, err
}
} else {
f, err := os.Open(path)
if err != nil {
return nil, err
}
defer f.Close()
if err = json.NewDecoder(f).Decode(&c); err != nil {
return nil, err
}
}
return &c, nil
}
func (c *Config) BorderPadding() (int, int, int, int) {
pad := c.Theme.BorderPadding
return pad[0], pad[1], pad[2], pad[3]
}