package main import ( "bufio" "errors" "fmt" "local/mytinytodoclient/mytinytodo" "local/mytinytodoclient/mytinytodo/remote" "log" "os" "strings" ) func main() { conf, err := remote.NewConfig() if err != nil { panic(err) } buffer, err := mytinytodo.NewBuffer(&mytinytodo.Config{Config: conf}) if err != nil { panic(err) } log.Printf("config: %v", *conf) for { line := readLine() first := strings.Split(line, " ")[0] if err := doLine(buffer, first, line); err != nil { log.Printf("err doing %s: %v", first, err) } } } func readLine() string { reader := bufio.NewReader(os.Stdin) text, _ := reader.ReadString('\n') return strings.TrimSpace(text) } func doLine(buffer *mytinytodo.Buffer, key, line string) error { defer func() { if err := recover(); err != nil { log.Printf("err on %s: %v", key, err) } }() err := fmt.Errorf("unknown command %q", key) switch key { case "refresh": buffer.RefreshLocal() err = nil case "dequeue": buffer.Dequeue() err = nil case "enqueue": err = errors.New("not impl") case "lists": var lists remote.Lists lists, err = buffer.Lists() if err == nil { log.Printf("%s: %v", key, lists) } case "tasks": var tasks remote.Tasks id := strings.Split(line, " ")[1] tasks, err = buffer.Tasks(remote.List{ID: id}) if err == nil { log.Printf("%s: %v", key, tasks) } case "quit": fallthrough case "exit": fallthrough case "q": err = errors.New("not impl") } return err } func oldMain() { conf, err := remote.NewConfig() if err != nil { panic(err) } remote, err := remote.NewClient(conf) if err != nil { panic(err) } if err := remote.ParseArgs(); err != nil { panic(err) } }