From 3f1b8a4c2aa07ff1d7cd8f50c052965c2f30a9c4 Mon Sep 17 00:00:00 2001 From: Marc Di Luzio Date: Mon, 22 Jun 2020 11:14:08 +0100 Subject: [PATCH] Create the filepath for the config file --- cmd/rove/main.go | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/cmd/rove/main.go b/cmd/rove/main.go index c0472de..e9453fc 100644 --- a/cmd/rove/main.go +++ b/cmd/rove/main.go @@ -7,6 +7,7 @@ import ( "io/ioutil" "os" "path" + "path/filepath" "time" "github.com/mdiluz/rove/pkg/game" @@ -68,17 +69,26 @@ func InnerMain(command string) error { var config = Config{ Accounts: make(map[string]string), } - _, err := os.Stat(*data) - if !os.IsNotExist(err) { - if b, err := ioutil.ReadFile(*data); err != nil { - return fmt.Errorf("failed to read file %s error: %s", *data, err) - } else if len(b) == 0 { - return fmt.Errorf("file %s was empty, assumin fresh data", *data) + // Create the path if needed + path := filepath.Dir(*data) + _, err := os.Stat(path) + if os.IsNotExist(err) { + os.MkdirAll(path, os.ModePerm) + } else { + // Read the file + _, err = os.Stat(*data) + if !os.IsNotExist(err) { + if b, err := ioutil.ReadFile(*data); err != nil { + return fmt.Errorf("failed to read file %s error: %s", *data, err) - } else if err := json.Unmarshal(b, &config); err != nil { - return fmt.Errorf("failed to unmarshal file %s error: %s", *data, err) + } else if len(b) == 0 { + return fmt.Errorf("file %s was empty, assumin fresh data", *data) + } else if err := json.Unmarshal(b, &config); err != nil { + return fmt.Errorf("failed to unmarshal file %s error: %s", *data, err) + + } } }