do not save if no effective changes for edit, dump

Bel LaPointe 2022-01-09 10:18:08 -05:00
parent fc12e0550d
commit 7f24b3f337
1 changed files with 31 additions and 8 deletions

View File

@ -195,6 +195,19 @@ func edit(dry bool, filepaths []string) error {
}
saveOne := func(filepath string) error {
tempFile := path.Join(tempDir, path.Base(filepath))
var rootTemp, rootOld pttodo.Root
if a, err := ioutil.ReadFile(tempFile); err != nil {
return err
} else if err := yaml.Unmarshal(a, &rootTemp); err != nil {
return err
} else if b, err := ioutil.ReadFile(filepath); err != nil {
return err
} else if err := yaml.Unmarshal(b, &rootOld); err != nil {
return err
} else if rootTemp.Equals(rootOld) {
log.Printf("no changes to %s", filepath)
return nil
}
if dry {
log.Printf("would've saved %s as %s", tempFile, filepath)
return nil
@ -295,14 +308,19 @@ func dump(dry bool, writer io.Writer, filepaths []string, tags []string, search,
return err
}
var root2 pttodo.Root
var root2, root2post pttodo.Root
if err := yaml.Unmarshal(b, &root2); err != nil {
return err
}
if err := yaml.Unmarshal(b, &root2post); err != nil {
return err
}
root2.MoveScheduledToTodo()
root.MergeIn(root2)
if !dry {
if !root2.Equals(root2post) {
log.Printf("refreshing %s", filepath)
b3, err := yaml.Marshal(root2)
if err != nil {
return err
@ -310,9 +328,14 @@ func dump(dry bool, writer io.Writer, filepaths []string, tags []string, search,
if err := os.WriteFile(filepath, b3, os.ModePerm); err != nil {
return err
}
} else {
log.Printf("not refreshing %s", filepath)
}
}
root.MergeIn(root2)
}
root.MoveScheduledToTodo()
var v interface{} = root