@@ -119,7 +119,11 @@ func Mkdir(ctx context.Context, path string) error {
119119}
120120
121121func Move (ctx context.Context , data wshrpc.CommandFileCopyData ) error {
122- log .Printf ("Move: %v" , data )
122+ opts := data .Opts
123+ if opts == nil {
124+ opts = & wshrpc.FileCopyOpts {}
125+ }
126+ log .Printf ("Move: srcuri: %v, desturi: %v, opts: %v" , data .SrcUri , data .DestUri , opts )
123127 srcClient , srcConn := CreateFileShareClient (ctx , data .SrcUri )
124128 if srcConn == nil || srcClient == nil {
125129 return fmt .Errorf ("error creating fileshare client, could not parse source connection %s" , data .SrcUri )
@@ -129,26 +133,23 @@ func Move(ctx context.Context, data wshrpc.CommandFileCopyData) error {
129133 return fmt .Errorf ("error creating fileshare client, could not parse destination connection %s" , data .DestUri )
130134 }
131135 if srcConn .Host != destConn .Host {
132- finfo , err := srcClient .Stat (ctx , srcConn )
133- if err != nil {
134- return fmt .Errorf ("cannot stat %q: %w" , data .SrcUri , err )
135- }
136- recursive := data .Opts != nil && data .Opts .Recursive
137- if finfo .IsDir && data .Opts != nil && ! recursive {
138- return fmt .Errorf ("cannot move directory %q to %q without recursive flag" , data .SrcUri , data .DestUri )
139- }
140- err = destClient .CopyRemote (ctx , srcConn , destConn , srcClient , data .Opts )
136+ isDir , err := destClient .CopyRemote (ctx , srcConn , destConn , srcClient , opts )
141137 if err != nil {
142138 return fmt .Errorf ("cannot copy %q to %q: %w" , data .SrcUri , data .DestUri , err )
143139 }
144- return srcClient .Delete (ctx , srcConn , recursive )
140+ return srcClient .Delete (ctx , srcConn , opts . Recursive && isDir )
145141 } else {
146- return srcClient .MoveInternal (ctx , srcConn , destConn , data . Opts )
142+ return srcClient .MoveInternal (ctx , srcConn , destConn , opts )
147143 }
148144}
149145
150146func Copy (ctx context.Context , data wshrpc.CommandFileCopyData ) error {
151- log .Printf ("Copy: %v" , data )
147+ opts := data .Opts
148+ if opts == nil {
149+ opts = & wshrpc.FileCopyOpts {}
150+ }
151+ opts .Recursive = true
152+ log .Printf ("Copy: srcuri: %v, desturi: %v, opts: %v" , data .SrcUri , data .DestUri , opts )
152153 srcClient , srcConn := CreateFileShareClient (ctx , data .SrcUri )
153154 if srcConn == nil || srcClient == nil {
154155 return fmt .Errorf ("error creating fileshare client, could not parse source connection %s" , data .SrcUri )
@@ -158,9 +159,11 @@ func Copy(ctx context.Context, data wshrpc.CommandFileCopyData) error {
158159 return fmt .Errorf ("error creating fileshare client, could not parse destination connection %s" , data .DestUri )
159160 }
160161 if srcConn .Host != destConn .Host {
161- return destClient .CopyRemote (ctx , srcConn , destConn , srcClient , data .Opts )
162+ _ , err := destClient .CopyRemote (ctx , srcConn , destConn , srcClient , opts )
163+ return err
162164 } else {
163- return srcClient .CopyInternal (ctx , srcConn , destConn , data .Opts )
165+ _ , err := srcClient .CopyInternal (ctx , srcConn , destConn , opts )
166+ return err
164167 }
165168}
166169
0 commit comments