When removing or renaming a folder, subfiles/folders of the path was not being updated
diff --git a/request-example.go b/request-example.go index 0f67888..f51eb0d 100644 --- a/request-example.go +++ b/request-example.go
@@ -11,6 +11,7 @@ "os" "path/filepath" "sort" + "strings" "sync" "syscall" "time" @@ -90,12 +91,32 @@ file.name = r.Target fs.files[r.Target] = file delete(fs.files, r.Filepath) + + if file.IsDir() { + fmt.Printf("Rename Dir %v, %v, %v\n", r.Target, file.name, r.Filepath) + for path, file := range fs.files { + if strings.HasPrefix(path, r.Filepath+"/") { + fmt.Printf("renaming %v from %v to %v\n", file.name, path, r.Target+path[len(r.Filepath):]) + file.name = r.Target + path[len(r.Filepath):] + fs.files[r.Target+path[len(r.Filepath):]] = file + delete(fs.files, path) + } + } + } case "Rmdir", "Remove": - _, err := fs.fetch(filepath.Dir(r.Filepath)) + file, err := fs.fetch(filepath.Dir(r.Filepath)) if err != nil { return err } delete(fs.files, r.Filepath) + + if file.IsDir() { + for path := range fs.files { + if strings.HasPrefix(path, r.Filepath+"/") { + delete(fs.files, path) + } + } + } case "Mkdir": _, err := fs.fetch(filepath.Dir(r.Filepath)) if err != nil {