diff options
Diffstat (limited to 'config/config.go')
| -rw-r--r-- | config/config.go | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/config/config.go b/config/config.go new file mode 100644 index 0000000..358fe72 --- /dev/null +++ b/config/config.go @@ -0,0 +1,36 @@ +package config + +import ( + "dove/messages" + "dove/utils/logger" +) + +var ( + IMAP imap + Mailbox mailbox + POP3 pop3 + Server server + SMTP smtp +) + +var ( + DataDir string + DevMode bool +) + +func init() { + DevMode = isDevelopmentMode() + osConfigDirectory := resolveOSConfigDirectory() + DataDir = resolveDataDirectory(DevMode, osConfigDirectory) + + configFilePath := resolveConfigFilePath(DevMode, osConfigDirectory) + if loadError := loadConfigFile(configFilePath); loadError != nil { + logger.Fatalf(LOG_PREFIX, messages.ConfigFileLoadFailed, loadError) + } + + for _, section := range []any{&Server, &SMTP, &IMAP, &POP3, &Mailbox} { + if parseError := parseSection(section); parseError != nil { + logger.Fatalf(LOG_PREFIX, messages.ConfigSectionParseFailed, parseError) + } + } +} |
