added recursively deleting folders
added tests for recursive delete added change dir to fix test + refactor fixed path issues changes directory now instead of deleting by path proftpd fix added file edge case + more tests added directory does not exist test added correct directory after delete test fixed correct directory test renamed test directories + files missed a renamed
This commit is contained in:
35
ftp.go
35
ftp.go
@@ -496,6 +496,41 @@ func (c *ServerConn) Delete(path string) error {
|
||||
return err
|
||||
}
|
||||
|
||||
// RemoveDirRecur deletes a non-empty folder recursively using
|
||||
// RemoveDir and Delete
|
||||
func (c *ServerConn) RemoveDirRecur(path string) error {
|
||||
err := c.ChangeDir(path)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
currentDir, err := c.CurrentDir()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
entries, err := c.List(currentDir)
|
||||
for _, entry := range entries {
|
||||
if entry.Name != ".." && entry.Name != "." {
|
||||
if entry.Type == EntryTypeFolder {
|
||||
err = c.RemoveDirRecur(currentDir + "/" + entry.Name)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
err = c.Delete(entry.Name)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
err = c.ChangeDirToParent()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = c.RemoveDir(currentDir)
|
||||
return err
|
||||
}
|
||||
|
||||
// MakeDir issues a MKD FTP command to create the specified directory on the
|
||||
// remote FTP server.
|
||||
func (c *ServerConn) MakeDir(path string) error {
|
||||
|
||||
Reference in New Issue
Block a user