From 77726e9af3e842aa9c6f719371c724b075ad3169 Mon Sep 17 00:00:00 2001 From: Randall Winkhart Date: Thu, 16 May 2024 18:02:19 -0400 Subject: [PATCH] Sync remote folders to client --- src/sync/client.go | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/sync/client.go b/src/sync/client.go index 58825f6..b0a95ab 100644 --- a/src/sync/client.go +++ b/src/sync/client.go @@ -178,6 +178,7 @@ func syncLists(localEntryModMap, remoteEntryModMap map[string]int64) { } } +// deletionSync removes entries from the client that have been deleted on the server (multi-client deletion) func deletionSync(deletions []string) { for _, deletion := range deletions { fmt.Println(ansiDelete+deletion+backend.AnsiReset, "has been sheared, removing...") @@ -185,11 +186,28 @@ func deletionSync(deletions []string) { } } +// folderSync creates folders on the client (from the given list of folder names) +func folderSync(folders []string) { // TODO also add folders on server when they are created from the client + for _, folder := range folders { + // check if folder already exists + isFile, isAccessible := backend.TargetIsFile(backend.EntryRoot+folder, false, 1) + + if !isFile && !isAccessible { + os.MkdirAll(backend.EntryRoot+folder, 0700) + } else if isFile { + fmt.Println(backend.AnsiError + "Sync failed - Failed to create folder \"" + folder + "\" - a file with the same name already exists" + backend.AnsiReset) + os.Exit(1) + } + } +} + // RunJob runs the SSH sync job func RunJob(manualSync bool) { // fetch remote lists remoteEntryModMap, remoteFolders, deletions := getRemoteDataFromClient(manualSync) - fmt.Println(remoteFolders) // TODO placeholder + + // sync folders + folderSync(remoteFolders) // sync deletions deletionSync(deletions)