aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBunchhieng <Bunchhieng@gmail.com>2016-09-15 10:13:42 -0400
committerBunchhieng <Bunchhieng@gmail.com>2016-09-15 10:13:42 -0400
commitc94956df1ca37f90a42b5f66ccb63213253e4d3e (patch)
treee52b21e8c89f0309e45408e81bf57578643bc350
parentaa0580af8066b030c720a20b5e79e98a53d1ec11 (diff)
Refactored code
-rw-r--r--.todos.json2
-rw-r--r--todo.go12
-rw-r--r--todolist/app.go9
-rw-r--r--todolist/file_store.go6
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}]
diff --git a/todo.go b/todo.go
index 74782ef..2b95c98 100644
--- a/todo.go
+++ b/todo.go
@@ -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() {