| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- package util
- import (
- "os"
- "path/filepath"
- "github.com/BurntSushi/toml"
- )
- const userAgent = "Mozilla/5.0 (X11; Linux x86_64; rv:95.0) Gecko/20100101 Firefox/95.0"
- type GeneralConfig struct {
- UserAgent string `toml:"user_agent"`
- FetchMessagesLimit int `toml:"fetch_messages_limit"`
- Mouse bool `toml:"mouse"`
- Timestamps bool `toml:"timestamps"`
- }
- type KeybindingsConfig struct {
- ToggleGuildsList string `toml:"toggle_guilds_list"`
- ToggleChannelsTreeView string `toml:"toggle_channels_tree_view"`
- ToggleMessagesTextView string `toml:"toggle_messages_text_view"`
- ToggleMessageInputField string `toml:"toggle_message_input_field"`
- ToggleMessageActionsList string `toml:"toggle_message_actions_list"`
- ToggleExternalEditor string `toml:"toggle_external_editor"`
- SelectPreviousMessage string `toml:"select_previous_message"`
- SelectNextMessage string `toml:"select_next_message"`
- SelectFirstMessage string `toml:"select_first_message"`
- SelectLastMessage string `toml:"select_last_message"`
- }
- type Config struct {
- Keybindings KeybindingsConfig `toml:"keybindings"`
- General GeneralConfig `toml:"general"`
- }
- func LoadConfig() *Config {
- configPath, err := os.UserConfigDir()
- if err != nil {
- panic(err)
- }
- configPath += "/discordo/config.toml"
- // Create a directory as well as create all of the nested directories, recursively.
- err = os.MkdirAll(filepath.Dir(configPath), os.ModePerm)
- if err != nil {
- panic(err)
- }
- c := &Config{}
- // If the configuration file does not exist, create and write the default configuration to the file.
- if _, err = os.Stat(configPath); os.IsNotExist(err) {
- f, err := os.Create(configPath)
- if err != nil {
- panic(err)
- }
- defer f.Close()
- c = newDefaultConfig()
- err = toml.NewEncoder(f).Encode(c)
- if err != nil {
- panic(err)
- }
- } else {
- _, err = toml.DecodeFile(configPath, c)
- if err != nil {
- panic(err)
- }
- }
- return c
- }
- func newDefaultConfig() *Config {
- return &Config{
- General: GeneralConfig{
- UserAgent: userAgent,
- FetchMessagesLimit: 50,
- Mouse: true,
- Timestamps: false,
- },
- Keybindings: KeybindingsConfig{
- ToggleGuildsList: "Rune[g]",
- ToggleChannelsTreeView: "Rune[c]",
- ToggleMessagesTextView: "Rune[m]",
- ToggleMessageInputField: "Rune[i]",
- ToggleMessageActionsList: "Rune[a]",
- ToggleExternalEditor: "Ctrl-E",
- SelectPreviousMessage: "Up",
- SelectNextMessage: "Down",
- SelectFirstMessage: "Home",
- SelectLastMessage: "End",
- },
- }
- }
|