aboutsummaryrefslogtreecommitdiff
path: root/internal/admin/undo.go
diff options
context:
space:
mode:
authorhistoria <[not public]>2026-07-04 23:04:00 -0400
committerhistoria <[not public]>2026-07-04 23:04:00 -0400
commit4385244d39b37d003dbb7a66a2ff3b05079b7047 (patch)
tree6498a06879cc4ff06612abed259b1403f071ecb2 /internal/admin/undo.go
parentad22ea3526a146ea8ce305c8375c35836465cc30 (diff)
downloadthehouseoficarus-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.go21
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)
}
}