package main import ( "fmt" "io/ioutil" "gopkg.in/yaml.v2" ) type Config struct { ApplicationName string `yaml:"application_name"` ApplicationPrefix string `yaml:"application_prefix"` DataDirectory string `yaml:"data_directory"` ListenAddress string `yaml:"listen_address"` AdminUser string `yaml:"admin_user"` AdminPassword string `yaml:"admin_password"` Generation int `yaml:"generation"` } func (c *Config) ParseFile(path string) (err error) { configRaw, err := ioutil.ReadFile(path) if err != nil { err = fmt.Errorf("can't load configuration: %s", err.Error()) return } err = yaml.UnmarshalStrict(configRaw, c) if err != nil { err = fmt.Errorf("can't parse configuration: %s", err.Error()) return } return } func NewConfig() *Config { return &Config{} } func NewConfigParseFile(path string) (c *Config, err error) { c = NewConfig() err = c.ParseFile(path) return }