From d247095e87ac5a298885e83c6d35faef16d1318b Mon Sep 17 00:00:00 2001 From: Bartal Laearsson Date: Fri, 28 Aug 2026 14:08:58 +0100 Subject: [PATCH] fix(drive cli)!: delete remote flag changed --- internal/drive/drive.go | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/internal/drive/drive.go b/internal/drive/drive.go index 4aa182c..f30de1b 100644 --- a/internal/drive/drive.go +++ b/internal/drive/drive.go @@ -30,7 +30,6 @@ func CheckAuth() error { return nil } -// EnsureRemoteParent creates the parent remote directory if it doesn't exist. func EnsureRemoteParent(remoteDir string) error { binary, err := Lookup() if err != nil { @@ -38,37 +37,45 @@ func EnsureRemoteParent(remoteDir string) error { } parentDir := filepath.Dir(remoteDir) - - // Try create-folder on the grandparent for the parent grandparent := filepath.Dir(parentDir) parentName := filepath.Base(parentDir) cmd := exec.Command(binary, "filesystem", "create-folder", grandparent, parentName) cmd.Stdout = nil cmd.Stderr = nil - cmd.Run() // Ignore errors — folder may already exist + cmd.Run() return nil } -// UploadDir uploads an entire local directory to Proton Drive. -// The local directory's basename becomes the remote directory name. +func CleanRemote(remoteDir string) { + binary, err := Lookup() + if err != nil { + return + } + + cmd := exec.Command(binary, "filesystem", "delete", remoteDir) + cmd.Stdout = nil + cmd.Stderr = nil + cmd.Run() +} + func UploadDir(localDir, remoteDir string) error { binary, err := Lookup() if err != nil { return fmt.Errorf("proton-drive not found in PATH: %w", err) } - // Ensure parent of remote dir exists if err := EnsureRemoteParent(remoteDir); err != nil { return fmt.Errorf("cannot prepare remote directory: %w", err) } - // Upload to parent — the local dir's basename creates the remote dir + CleanRemote(remoteDir) + remoteParent := filepath.Dir(remoteDir) cmd := exec.Command(binary, "filesystem", "upload", localDir, remoteParent, - "--conflict-strategy", "replace") + "--folder-conflict-strategy", "replace", "--file-conflict-strategy", "replace") var stderr strings.Builder cmd.Stderr = &stderr @@ -80,7 +87,6 @@ func UploadDir(localDir, remoteDir string) error { return nil } -// Upload uploads a single local file to a remote path on Proton Drive. func Upload(localPath, remotePath string) error { binary, err := Lookup() if err != nil { @@ -111,7 +117,7 @@ func Upload(localPath, remotePath string) error { func runUpload(binary, localPath, remoteDir string) error { cmd := exec.Command(binary, "filesystem", "upload", localPath, remoteDir, - "--conflict-strategy", "replace") + "--folder-conflict-strategy", "replace", "--file-conflict-strategy", "replace") var stderr strings.Builder cmd.Stderr = &stderr