diff options
| author | Bunchhieng <Bunchhieng@gmail.com> | 2016-09-15 10:13:42 -0400 |
|---|---|---|
| committer | Bunchhieng <Bunchhieng@gmail.com> | 2016-09-15 10:13:42 -0400 |
| commit | c94956df1ca37f90a42b5f66ccb63213253e4d3e (patch) | |
| tree | e52b21e8c89f0309e45408e81bf57578643bc350 | |
| parent | aa0580af8066b030c720a20b5e79e98a53d1ec11 (diff) | |
Refactored code
| -rw-r--r-- | .todos.json | 2 | ||||
| -rw-r--r-- | todo.go | 12 | ||||
| -rw-r--r-- | todolist/app.go | 9 | ||||
| -rw-r--r-- | todolist/file_store.go | 6 |
4 files changed, 20 insertions, 9 deletions
diff --git a/.todos.json b/.todos.json index ab83a99..726fc95 100644 --- a/.todos.json +++ b/.todos.json @@ -1 +1 @@ -[{"id":1,"subject":"support for priorities +feature","projects":["feature"],"contexts":[],"due":"2016-07-08","completed":false,"archived":false},{"id":2,"subject":"fix bug with 'tod' not being recognized +bug","projects":["bug"],"contexts":[],"due":"2016-07-08","completed":false,"archived":false},{"id":3,"subject":"separate into packages/directories +refactor","projects":["refactor"],"contexts":[],"due":"2016-07-08","completed":false,"archived":false},{"id":4,"subject":"+documentation re-record how it works using this https://asciinema.org/","projects":["documentation"],"contexts":[],"due":"","completed":false,"archived":false},{"id":5,"subject":"+slideplayer nice quote support","projects":["slideplayer"],"contexts":[],"due":"","completed":false,"archived":false},{"id":6,"subject":"+slideplayer image filters using css3","projects":["slideplayer"],"contexts":[],"due":"","completed":false,"archived":false},{"id":7,"subject":"+slideplayer syntax highlighting and code blocks","projects":["slideplayer"],"contexts":[],"due":"","completed":false,"archived":false},{"id":8,"subject":"+slideplayer presenter notes","projects":["slideplayer"],"contexts":[],"due":"","completed":false,"archived":false}]
\ No newline at end of file +[{"id":1,"subject":"support for priorities +feature","projects":["feature"],"contexts":[],"due":"2016-07-08","completed":false,"archived":false},{"id":2,"subject":"fix bug with 'tod' not being recognized +bug","projects":["bug"],"contexts":[],"due":"2016-07-08","completed":false,"archived":false},{"id":3,"subject":"separate into packages/directories +refactor","projects":["refactor"],"contexts":[],"due":"2016-07-08","completed":false,"archived":false},{"id":4,"subject":"+documentation re-record how it works using this https://asciinema.org/","projects":["documentation"],"contexts":[],"due":"","completed":false,"archived":false},{"id":5,"subject":"+slideplayer nice quote support","projects":["slideplayer"],"contexts":[],"due":"","completed":false,"archived":false},{"id":6,"subject":"+slideplayer image filters using css3","projects":["slideplayer"],"contexts":[],"due":"","completed":false,"archived":false},{"id":7,"subject":"+slideplayer syntax highlighting and code blocks","projects":["slideplayer"],"contexts":[],"due":"","completed":false,"archived":false},{"id":8,"subject":"+slideplayer presenter notes","projects":["slideplayer"],"contexts":[],"due":"","completed":false,"archived":false}] @@ -128,9 +128,13 @@ func routeInput(command string, input string) { case "init": app.InitializeRepo() case "web": - web := todolist.NewWebapp() - fmt.Println("Now serving todolist web.\nHead to http://localhost:7890 to see your todo list!") - open.Start("http://localhost:7890") - web.Run() + if err := app.Load(); err != nil { + os.Exit(1) + } else { + web := todolist.NewWebapp() + fmt.Println("Now serving todolist web.\nHead to http://localhost:7890 to see your todo list!") + open.Start("http://localhost:7890") + web.Run() + } } } diff --git a/todolist/app.go b/todolist/app.go index 7f64366..44d97f5 100644 --- a/todolist/app.go +++ b/todolist/app.go @@ -153,8 +153,13 @@ func (a *App) getGroups(input string, todos []*Todo) *GroupedTodos { return grouped } -func (a *App) Load() { - a.TodoList.Load(a.TodoStore.Load()) +func (a *App) Load() error { + todos, err := a.TodoStore.Load() + if err != nil { + return err + } + a.TodoList.Load(todos) + return nil } func (a *App) Save() { diff --git a/todolist/file_store.go b/todolist/file_store.go index 61e6e7c..5413295 100644 --- a/todolist/file_store.go +++ b/todolist/file_store.go @@ -16,11 +16,12 @@ func NewFileStore() *FileStore { return &FileStore{FileLocation: ".todos.json", Loaded: false} } -func (f *FileStore) Load() []*Todo { +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'") + return nil, err os.Exit(0) } @@ -28,11 +29,12 @@ func (f *FileStore) Load() []*Todo { jerr := json.Unmarshal(data, &todos) if jerr != nil { fmt.Println("Error reading json data", jerr) + return nil, jerr os.Exit(1) } f.Loaded = true - return todos + return todos, nil } func (f *FileStore) Initialize() { |
