aboutsummaryrefslogtreecommitdiff
path: root/config/config.go
diff options
context:
space:
mode:
Diffstat (limited to 'config/config.go')
-rw-r--r--config/config.go36
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)
+ }
+ }
+}