fix(drive cli)!: delete remote flag changed

This commit is contained in:
2026-08-28 14:08:58 +01:00
parent 66579d068d
commit d247095e87
+17 -11
View File
@@ -30,7 +30,6 @@ func CheckAuth() error {
return nil return nil
} }
// EnsureRemoteParent creates the parent remote directory if it doesn't exist.
func EnsureRemoteParent(remoteDir string) error { func EnsureRemoteParent(remoteDir string) error {
binary, err := Lookup() binary, err := Lookup()
if err != nil { if err != nil {
@@ -38,37 +37,45 @@ func EnsureRemoteParent(remoteDir string) error {
} }
parentDir := filepath.Dir(remoteDir) parentDir := filepath.Dir(remoteDir)
// Try create-folder on the grandparent for the parent
grandparent := filepath.Dir(parentDir) grandparent := filepath.Dir(parentDir)
parentName := filepath.Base(parentDir) parentName := filepath.Base(parentDir)
cmd := exec.Command(binary, "filesystem", "create-folder", grandparent, parentName) cmd := exec.Command(binary, "filesystem", "create-folder", grandparent, parentName)
cmd.Stdout = nil cmd.Stdout = nil
cmd.Stderr = nil cmd.Stderr = nil
cmd.Run() // Ignore errors — folder may already exist cmd.Run()
return nil return nil
} }
// UploadDir uploads an entire local directory to Proton Drive. func CleanRemote(remoteDir string) {
// The local directory's basename becomes the remote directory name. 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 { func UploadDir(localDir, remoteDir string) error {
binary, err := Lookup() binary, err := Lookup()
if err != nil { if err != nil {
return fmt.Errorf("proton-drive not found in PATH: %w", err) return fmt.Errorf("proton-drive not found in PATH: %w", err)
} }
// Ensure parent of remote dir exists
if err := EnsureRemoteParent(remoteDir); err != nil { if err := EnsureRemoteParent(remoteDir); err != nil {
return fmt.Errorf("cannot prepare remote directory: %w", err) 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) remoteParent := filepath.Dir(remoteDir)
cmd := exec.Command(binary, "filesystem", "upload", localDir, remoteParent, cmd := exec.Command(binary, "filesystem", "upload", localDir, remoteParent,
"--conflict-strategy", "replace") "--folder-conflict-strategy", "replace", "--file-conflict-strategy", "replace")
var stderr strings.Builder var stderr strings.Builder
cmd.Stderr = &stderr cmd.Stderr = &stderr
@@ -80,7 +87,6 @@ func UploadDir(localDir, remoteDir string) error {
return nil return nil
} }
// Upload uploads a single local file to a remote path on Proton Drive.
func Upload(localPath, remotePath string) error { func Upload(localPath, remotePath string) error {
binary, err := Lookup() binary, err := Lookup()
if err != nil { if err != nil {
@@ -111,7 +117,7 @@ func Upload(localPath, remotePath string) error {
func runUpload(binary, localPath, remoteDir string) error { func runUpload(binary, localPath, remoteDir string) error {
cmd := exec.Command(binary, "filesystem", "upload", localPath, remoteDir, cmd := exec.Command(binary, "filesystem", "upload", localPath, remoteDir,
"--conflict-strategy", "replace") "--folder-conflict-strategy", "replace", "--file-conflict-strategy", "replace")
var stderr strings.Builder var stderr strings.Builder
cmd.Stderr = &stderr cmd.Stderr = &stderr