on write conflict during vim, save as filename.uuid..fileExtension
This commit is contained in:
@@ -15,6 +15,8 @@ import (
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
|
||||
"gogs.inhome.blapointe.com/bel/pttodo/pttodo"
|
||||
|
||||
"gopkg.in/yaml.v2"
|
||||
@@ -160,6 +162,7 @@ func edit(dry bool, filepaths []string) error {
|
||||
return err
|
||||
}
|
||||
originals := map[string]pttodo.Root{}
|
||||
lastModified := map[string]time.Time{}
|
||||
for _, target := range filepaths {
|
||||
var original pttodo.Root
|
||||
if r, err := filePathReader(target); err != nil {
|
||||
@@ -171,7 +174,9 @@ func edit(dry bool, filepaths []string) error {
|
||||
} else if err := ioutil.WriteFile(path.Join(tempDir, path.Base(target)), c, os.ModePerm); err != nil {
|
||||
return err
|
||||
}
|
||||
info, _ := os.Stat(target)
|
||||
originals[target] = original
|
||||
lastModified[target] = info.ModTime()
|
||||
}
|
||||
if err := vimd(tempDir); err != nil {
|
||||
return err
|
||||
@@ -236,7 +241,11 @@ func edit(dry bool, filepaths []string) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := ioutil.WriteFile(target, c, os.ModePerm); err != nil {
|
||||
outputPath := target
|
||||
if info, _ := os.Stat(target); info.ModTime() != lastModified[target] {
|
||||
outputPath = fmt.Sprintf("%s.%s.%s", outputPath, uuid.New().String(), path.Ext(outputPath))
|
||||
}
|
||||
if err := ioutil.WriteFile(outputPath, c, os.ModePerm); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user