From ec9eab8a3efe2ad60ba6e5e29d8b487c94d0563a Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Tue, 30 Aug 2016 11:19:51 -0400 Subject: [PATCH] Auto update settings.json if it contains 'null' --- cmd/micro/settings.go | 45 +++++++++++++++++++++++++------------------ 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/cmd/micro/settings.go b/cmd/micro/settings.go index 15f175dc..e95bd09c 100644 --- a/cmd/micro/settings.go +++ b/cmd/micro/settings.go @@ -21,16 +21,21 @@ func InitGlobalSettings() { var parsed map[string]interface{} filename := configDir + "/settings.json" + writeSettings := false if _, e := os.Stat(filename); e == nil { input, err := ioutil.ReadFile(filename) - if err != nil { - TermMessage("Error reading settings.json file: " + err.Error()) - return - } + if !strings.HasPrefix(string(input), "null") { + if err != nil { + TermMessage("Error reading settings.json file: " + err.Error()) + return + } - err = json.Unmarshal(input, &parsed) - if err != nil { - TermMessage("Error reading settings.json:", err.Error()) + err = json.Unmarshal(input, &parsed) + if err != nil { + TermMessage("Error reading settings.json:", err.Error()) + } + } else { + writeSettings = true } } @@ -44,7 +49,7 @@ func InitGlobalSettings() { } } - if _, err := os.Stat(filename); os.IsNotExist(err) { + if _, err := os.Stat(filename); os.IsNotExist(err) || writeSettings { err := WriteSettings(filename) if err != nil { TermMessage("Error writing settings.json file: " + err.Error()) @@ -98,19 +103,21 @@ func WriteSettings(filename string) error { parsed = globalSettings if _, e := os.Stat(filename); e == nil { input, err := ioutil.ReadFile(filename) - if err != nil { - return err - } + if string(input) != "null" { + if err != nil { + return err + } - err = json.Unmarshal(input, &parsed) - if err != nil { - TermMessage("Error reading settings.json:", err.Error()) - } + err = json.Unmarshal(input, &parsed) + if err != nil { + TermMessage("Error reading settings.json:", err.Error()) + } - for k, v := range parsed { - if !strings.HasPrefix(reflect.TypeOf(v).String(), "map") { - if _, ok := globalSettings[k]; ok { - parsed[k] = globalSettings[k] + for k, v := range parsed { + if !strings.HasPrefix(reflect.TypeOf(v).String(), "map") { + if _, ok := globalSettings[k]; ok { + parsed[k] = globalSettings[k] + } } } }