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 a8fbc13e7c
commit 2eda765ad9
3 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