43 lines
936 B
Go
43 lines
936 B
Go
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
|
|
}
|