diff options
| author | historia <[not public]> | 2026-07-04 23:04:00 -0400 |
|---|---|---|
| committer | historia <[not public]> | 2026-07-04 23:04:00 -0400 |
| commit | 4385244d39b37d003dbb7a66a2ff3b05079b7047 (patch) | |
| tree | 6498a06879cc4ff06612abed259b1403f071ecb2 /internal/admin/undo.go | |
| parent | ad22ea3526a146ea8ce305c8375c35836465cc30 (diff) | |
| download | thehouseoficarus-4385244d39b37d003dbb7a66a2ff3b05079b7047.tar.gz | |
feat: drag/drop files in gui to change directories
Diffstat (limited to 'internal/admin/undo.go')
| -rw-r--r-- | internal/admin/undo.go | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/internal/admin/undo.go b/internal/admin/undo.go index f69fd9f..0c5ebaa 100644 --- a/internal/admin/undo.go +++ b/internal/admin/undo.go @@ -35,7 +35,7 @@ func (c ChangeDesc) ShortDesc() string { case c.IsDelete: return fmt.Sprintf("Deleted %s", filepath.Base(c.FilePath)) case c.NewFilePath != "": - return fmt.Sprintf("Renamed %s", filepath.Base(c.NewFilePath)) + return fmt.Sprintf("Moved %s", filepath.Base(c.NewFilePath)) default: return fmt.Sprintf("Edited %s", filepath.Base(c.FilePath)) } @@ -129,17 +129,21 @@ func (us *UndoStack) applyUndo(c ChangeDesc) error { } if c.IsDelete { if c.OldContent == nil { - return fmt.Errorf("no backup content to restore for %s", c.FilePath) - } - if err := os.WriteFile(c.FilePath, c.OldContent, 0644); err != nil { - return fmt.Errorf("restore deleted %s: %w", c.FilePath, err) + os.MkdirAll(c.FilePath, 0755) + } else { + os.MkdirAll(filepath.Dir(c.FilePath), 0755) + if err := os.WriteFile(c.FilePath, c.OldContent, 0644); err != nil { + return fmt.Errorf("restore deleted %s: %w", c.FilePath, err) + } } for _, ef := range c.ExtraFiles { + os.MkdirAll(filepath.Dir(ef.FilePath), 0755) os.WriteFile(ef.FilePath, ef.OldContent, 0644) } } else if c.IsCreate { os.Remove(c.FilePath) for _, ef := range c.ExtraFiles { + os.MkdirAll(filepath.Dir(ef.FilePath), 0755) os.WriteFile(ef.FilePath, ef.OldContent, 0644) } } else { @@ -148,10 +152,12 @@ func (us *UndoStack) applyUndo(c ChangeDesc) error { if c.NewFilePath != "" { target = c.FilePath } + os.MkdirAll(filepath.Dir(target), 0755) if err := os.WriteFile(target, content, 0644); err != nil { return fmt.Errorf("revert %s: %w", target, err) } for _, ef := range c.ExtraFiles { + os.MkdirAll(filepath.Dir(ef.FilePath), 0755) os.WriteFile(ef.FilePath, ef.OldContent, 0644) } } @@ -167,15 +173,18 @@ func (us *UndoStack) applyRedo(c ChangeDesc) error { if c.NewFilePath != "" { target = c.NewFilePath } + os.MkdirAll(filepath.Dir(target), 0755) if err := os.WriteFile(target, c.NewContent, 0644); err != nil { return fmt.Errorf("recreate %s: %w", target, err) } for _, ef := range c.ExtraFiles { + os.MkdirAll(filepath.Dir(ef.FilePath), 0755) os.WriteFile(ef.FilePath, ef.NewContent, 0644) } } else if c.IsDelete { os.Remove(c.FilePath) for _, ef := range c.ExtraFiles { + os.MkdirAll(filepath.Dir(ef.FilePath), 0755) os.WriteFile(ef.FilePath, ef.NewContent, 0644) } } else { @@ -184,10 +193,12 @@ func (us *UndoStack) applyRedo(c ChangeDesc) error { if c.NewFilePath != "" { target = c.NewFilePath } + os.MkdirAll(filepath.Dir(target), 0755) if err := os.WriteFile(target, content, 0644); err != nil { return fmt.Errorf("reapply %s: %w", target, err) } for _, ef := range c.ExtraFiles { + os.MkdirAll(filepath.Dir(ef.FilePath), 0755) os.WriteFile(ef.FilePath, ef.NewContent, 0644) } } |
