diff options
| author | Quey-Liang Kao <s101062801@m101.nthu.edu.tw> | 2017-02-04 20:58:16 +0800 |
|---|---|---|
| committer | Quey-Liang Kao <s101062801@m101.nthu.edu.tw> | 2017-02-04 20:58:16 +0800 |
| commit | 08bfbb5ba4be9bf936c86c8cfd38cfe9835a13d4 (patch) | |
| tree | ffe6a7eb015bd48b58a64659cd12a6003115ea33 /todolist/file_store.go | |
| parent | be32789ec53ebe0a2141cf4d13696280ef79ee7f (diff) | |
Global repo file as the default
This patch implments the new workflow mentioned in #31, in which
the program still tries to find a repo file in the working directory
first, and it tries the global one in the home directory if no one
is found.
In this patch, the condition check of the existence of the repo file
is done in `todolist/file_store.go` at the very early step before
the input routing.
Diffstat (limited to 'todolist/file_store.go')
| -rw-r--r-- | todolist/file_store.go | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/todolist/file_store.go b/todolist/file_store.go index 5413295..63738b2 100644 --- a/todolist/file_store.go +++ b/todolist/file_store.go @@ -5,6 +5,7 @@ import ( "fmt" "io/ioutil" "os" + "os/user" ) type FileStore struct { @@ -13,22 +14,33 @@ type FileStore struct { } func NewFileStore() *FileStore { - return &FileStore{FileLocation: ".todos.json", Loaded: false} + localrepo := ".todos.json" + usr, _ := user.Current() + homerepo := fmt.Sprintf("%s/.todos.json", usr.HomeDir) + _, err1 := os.Stat(localrepo) + _, err2 := os.Stat(homerepo) + + if err1 == nil { + return &FileStore{FileLocation: localrepo, Loaded: false} + } else if err2 == nil { + return &FileStore{FileLocation: homerepo, Loaded: false} + } else { + return &FileStore{FileLocation: "", Loaded: false} + } } func (f *FileStore) Load() ([]*Todo, error) { data, err := ioutil.ReadFile(f.FileLocation) if err != nil { - fmt.Println("No todo file found!") - fmt.Println("Initialize a new todo repo by running 'todo init'") + fmt.Println("Error reading", f.FileLocation, "by", err) return nil, err - os.Exit(0) + os.Exit(1) } var todos []*Todo jerr := json.Unmarshal(data, &todos) if jerr != nil { - fmt.Println("Error reading json data", jerr) + fmt.Println("Error reading", f.FileLocation, "by", jerr) return nil, jerr os.Exit(1) } |
