instead of os.rename, io.WriteFile and os.Remove

master
bel 2024-12-20 20:38:11 -07:00
parent 1d958e8a52
commit f72cb35e79
2 changed files with 16 additions and 3 deletions

View File

@ -103,7 +103,7 @@ func _edit(filepaths []string) error {
dir := "" dir := ""
for _, f := range filepaths { for _, f := range filepaths {
if edited, ok := edits[path.Base(f)]; ok { if edited, ok := edits[path.Base(f)]; ok {
if err := os.Rename(edited, f); err != nil { if err := rename(edited, f); err != nil {
return err return err
} }
delete(edits, path.Base(f)) delete(edits, path.Base(f))
@ -118,7 +118,7 @@ func _edit(filepaths []string) error {
if _, err := os.Stat(f); err == nil { if _, err := os.Stat(f); err == nil {
f = fmt.Sprintf("%s.todo.%s", f, uuid.New().String()) f = fmt.Sprintf("%s.todo.%s", f, uuid.New().String())
} }
if err := os.Rename(editedFile, f); err != nil { if err := rename(editedFile, f); err != nil {
return err return err
} }
} }

View File

@ -68,7 +68,20 @@ func merge(filepath string, mergeTargetFilePath string) error {
if err != nil { if err != nil {
return err return err
} }
return os.Rename(tmppath, filepath) return rename(tmppath, filepath)
}
func rename(oldpath, newpath string) error {
b, err := io.ReadFile(oldpath)
if err != nil {
return err
}
if err := io.WriteFile(b, newpath, os.ModePerm); err != nil {
return err
}
return os.Remove(oldpath)
} }
func marshalRootToTempFile(root pttodo.Root) (string, error) { func marshalRootToTempFile(root pttodo.Root) (string, error) {