all repos — mx @ 12fc7b4d3cf1c04ee2075775a683b7bc6227ee1f

work in progress MUA

config/config.go (view raw)

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
package config

import (
	"fmt"
	"os"
	"path/filepath"

	"gopkg.in/yaml.v2"
)

var Config ConfigYaml

func init() {
	Config = *ParseConfig()
}

type ConfigYaml struct {
	Maildir struct {
		Base    string   `yaml:"base"`
		Inbox   string   `yaml:"inbox"`
		Sent    string   `yaml:"sent"`
		Trash   string   `yaml:"trash"`
		Junk    string   `yaml:"junk"`
		Archive string   `yaml:"archive"`
		Drafts  string   `yaml:"drafts"`
		Custom  []string `yaml:"custom"`
	} `yaml:"maildir"`
}

func ParseConfig() *ConfigYaml {
	cfg := ConfigYaml{}
	hd, _ := os.UserHomeDir()

	// ~/.config/mx/mx.yaml
	configPath := filepath.Join(hd, ".config", "mx", "mx.yaml")

	cfile, err := os.ReadFile(configPath)
	if err != nil {
		fmt.Errorf("error: %+v\n", err)
		return nil
	}
	if err = yaml.Unmarshal(cfile, &cfg); err != nil {
		fmt.Errorf("error: %+v\n", err)
		return nil
	}
	return &cfg
}