func FindTaskId(index string, autoFirst bool) string { if index == "" { if autoFirst == false { log.Fatal("fatal: Task index is required.") } else { index = "0" } } var id string txt, err := ioutil.ReadFile(utils.CacheFile()) if err != nil { // cache file not exist ind, parseErr := strconv.Atoi(index) utils.Check(parseErr) task := Tasks(url.Values{}, false)[ind] id = strconv.Itoa(task.Id) } else { lines := regexp.MustCompile("\n").Split(string(txt), -1) for i, line := range lines { if index == strconv.Itoa(i) { line = regexp.MustCompile("^[0-9]*:").ReplaceAllString(line, "") // remove index id = regexp.MustCompile("^[0-9]*").FindString(line) } } } return id }
func cache(tasks []api.Task_t) { f, _ := os.Create(utils.CacheFile()) defer f.Close() for i, t := range tasks { f.WriteString(strconv.Itoa(i) + ":") f.WriteString(strconv.Itoa(t.Id) + ":") f.WriteString(t.Due_on + ":") f.WriteString(t.Name + "\n") } }
func Tasks(c *cli.Context) { if c.Bool("no-cache") { fromAPI(false) } else { if utils.Older(CacheDuration, utils.CacheFile()) || c.Bool("refresh") { fromAPI(true) } else { txt, err := ioutil.ReadFile(utils.CacheFile()) if err == nil { lines := regexp.MustCompile("\n").Split(string(txt), -1) for _, line := range lines { if len(line) < 1 { continue } format(line) } } else { fromAPI(true) } } } }