Refactor config loading

This commit is contained in:
Marcin Kulik
2015-03-12 12:49:26 +01:00
parent 88fc47dae0
commit 1ef9b16d3d
2 changed files with 15 additions and 20 deletions

View File

@@ -107,7 +107,7 @@ func main() {
os.Exit(1)
}
cfg, err := util.LoadConfig(env)
cfg, err := util.GetConfig(env)
if err != nil {
fmt.Println(err)
os.Exit(1)

View File

@@ -38,32 +38,32 @@ type ConfigFile struct {
}
type Config struct {
Cfg *ConfigFile
Env map[string]string
File *ConfigFile
Env map[string]string
}
func (c *Config) ApiUrl() string {
return FirstNonBlank(c.Env["ASCIINEMA_API_URL"], c.Cfg.API.URL, DefaultAPIURL)
return FirstNonBlank(c.Env["ASCIINEMA_API_URL"], c.File.API.URL, DefaultAPIURL)
}
func (c *Config) ApiToken() string {
return FirstNonBlank(c.Cfg.API.Token, c.Cfg.User.Token)
return FirstNonBlank(c.File.API.Token, c.File.User.Token)
}
func (c *Config) RecordCommand() string {
return FirstNonBlank(c.Cfg.Record.Command, c.Env["SHELL"], DefaultCommand)
return FirstNonBlank(c.File.Record.Command, c.Env["SHELL"], DefaultCommand)
}
func (c *Config) RecordMaxWait() uint {
return c.Cfg.Record.MaxWait
return c.File.Record.MaxWait
}
func (c *Config) RecordYes() bool {
return c.Cfg.Record.Yes
return c.File.Record.Yes
}
func LoadConfig(env map[string]string) (*Config, error) {
cfg, err := loadConfig(env)
func GetConfig(env map[string]string) (*Config, error) {
cfg, err := loadConfigFile(env)
if err != nil {
return nil, err
}
@@ -71,7 +71,7 @@ func LoadConfig(env map[string]string) (*Config, error) {
return &Config{cfg, env}, nil
}
func loadConfig(env map[string]string) (*ConfigFile, error) {
func loadConfigFile(env map[string]string) (*ConfigFile, error) {
homeDir := env["HOME"]
if homeDir == "" {
return nil, errors.New("Need $HOME")
@@ -79,21 +79,16 @@ func loadConfig(env map[string]string) (*ConfigFile, error) {
cfgPath := filepath.Join(homeDir, ".asciinema", "config")
cfg, err := loadConfigFile(cfgPath)
if err != nil {
return nil, err
}
return cfg, nil
}
func loadConfigFile(cfgPath string) (*ConfigFile, error) {
if _, err := os.Stat(cfgPath); os.IsNotExist(err) {
if err = createConfigFile(cfgPath); err != nil {
return nil, err
}
}
return readConfigFile(cfgPath)
}
func readConfigFile(cfgPath string) (*ConfigFile, error) {
var cfg ConfigFile
if err := gcfg.ReadFileInto(&cfg, cfgPath); err != nil {
return nil, err