Bugfix: Error while deleting remote dirs

This commit is contained in:
Thorsten Sommer 2017-03-04 11:26:58 +01:00
parent 96183890ac
commit 71ba42bec8
2 changed files with 20 additions and 4 deletions

16
Sync/ByLength.go Normal file
View File

@ -0,0 +1,16 @@
package Sync
type ByLength []string
func (s ByLength) Len() int {
return len(s)
}
func (s ByLength) Swap(i, j int) {
s[i], s[j] = s[j], s[i]
}
// Longer strings will appear first.
func (s ByLength) Less(i, j int) bool {
return len(s[i]) > len(s[j])
}

View File

@ -2,8 +2,6 @@ package Sync
import ( import (
"fmt" "fmt"
"github.com/pkg/sftp"
"golang.org/x/crypto/ssh"
"io" "io"
"log" "log"
"os" "os"
@ -11,6 +9,9 @@ import (
"sort" "sort"
"strings" "strings"
"time" "time"
"github.com/pkg/sftp"
"golang.org/x/crypto/ssh"
) )
func Synchronise(ssh *ssh.Client, supervised, pushOnly bool, localDir, remoteDir string) { func Synchronise(ssh *ssh.Client, supervised, pushOnly bool, localDir, remoteDir string) {
@ -156,7 +157,7 @@ func Synchronise(ssh *ssh.Client, supervised, pushOnly bool, localDir, remoteDir
log.Printf("Found %d remote files to delete.\n", len(deleteRemoteFiles)) log.Printf("Found %d remote files to delete.\n", len(deleteRemoteFiles))
if len(deleteRemoteFiles) > 0 { if len(deleteRemoteFiles) > 0 {
sort.Strings(deleteRemoteFiles) sort.Sort(ByLength(deleteRemoteFiles))
shouldDeleteRemoteFiles := true shouldDeleteRemoteFiles := true
if supervised { if supervised {
fmt.Println(`=================================================================`) fmt.Println(`=================================================================`)
@ -193,7 +194,6 @@ func Synchronise(ssh *ssh.Client, supervised, pushOnly bool, localDir, remoteDir
continue continue
} }
// TODO: Does not work: File an issue!
removeError := sftp.Remove(normalised2remoteFiles[remoteFileNormalised] + `/`) removeError := sftp.Remove(normalised2remoteFiles[remoteFileNormalised] + `/`)
if removeError != nil { if removeError != nil {
log.Printf("Was not able to delete the remote directory %s: %s\n", normalised2remoteFiles[remoteFileNormalised], removeError.Error()) log.Printf("Was not able to delete the remote directory %s: %s\n", normalised2remoteFiles[remoteFileNormalised], removeError.Error())