mirror of
https://github.com/asciinema/asciinema.git
synced 2025-12-16 11:48:13 +01:00
Refactor config loading
This commit is contained in:
2
main.go
2
main.go
@@ -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)
|
||||
|
||||
33
util/cfg.go
33
util/cfg.go
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user