if item in todo is scheduled for later, then move it

This commit is contained in:
Bel LaPointe
2022-03-23 08:04:35 -06:00
parent 8c050d1d89
commit 8276308d52
4 changed files with 48 additions and 8 deletions

View File

@@ -113,26 +113,41 @@ func edit(dry bool, filepaths []string) error {
if err != nil {
return err
}
originals := map[string]pttodo.Root{}
for _, target := range filepaths {
var original pttodo.Root
if b, err := ioutil.ReadFile(target); err != nil && !os.IsNotExist(err) {
return err
} else if err := ioutil.WriteFile(path.Join(tempDir, path.Base(target)), b, os.ModePerm); err != nil {
} else if err := yaml.Unmarshal(b, &original); err != nil {
return err
} else if c, err := yaml.Marshal(original.Todo); err != nil {
return err
} else if err := ioutil.WriteFile(path.Join(tempDir, path.Base(target)), c, os.ModePerm); err != nil {
return err
}
originals[target] = original
}
if err := vimd(tempDir); err != nil {
return err
}
for _, target := range filepaths {
for {
err := verifyFile(path.Join(tempDir, path.Base(target)))
err := func() error {
var todos []pttodo.Todo
if b, err := ioutil.ReadFile(path.Join(tempDir, path.Base(target))); err != nil {
return err
} else if err := yaml.Unmarshal(b, &todos); err != nil {
return err
}
return nil
}()
if err == nil {
break
}
log.Printf("%v, press <Enter> to resume editing", err)
log.Printf("%s, press <Enter> to resume editing", err)
b := make([]byte, 1)
if _, err := os.Stdin.Read(b); err != nil {
break
return err
}
if err := vimd(tempDir); err != nil {
return err
@@ -143,12 +158,13 @@ func edit(dry bool, filepaths []string) error {
return nil
}
for _, target := range filepaths {
var todo pttodo.Root
original := originals[target]
if b, err := ioutil.ReadFile(path.Join(tempDir, path.Base(target))); err != nil {
return err
} else if err := yaml.Unmarshal(b, &todo); err != nil {
} else if err := yaml.Unmarshal(b, &original.Todo); err != nil {
return err
} else if c, err := yaml.Marshal(todo); err != nil {
} else if original.AutoMove(); false {
} else if c, err := yaml.Marshal(original); err != nil {
return err
} else if err := ioutil.WriteFile(target, c, os.ModePerm); err != nil {
return err

Binary file not shown.

View File

@@ -1,5 +1,12 @@
todo:
- a
- b
- a
scheduled: []
scheduled:
- todo: abc
schedule: "2022-05-01"
ts: Wed Mar 23 08:03:45 MDT 2022
- todo: def
schedule: "2022-05-01"
ts: Wed Mar 23 08:04:05 MDT 2022
done: []