@@ -135,7 +135,7 @@ func copy(ctx context.Context, input CopyInputs) (CopyOutputs, error) {
135
135
func remoteStat (sftp * sftp.Client , path string ) (fs.FileInfo , error ) {
136
136
info , err := sftp .Stat (path )
137
137
if err != nil && ! errors .Is (err , os .ErrNotExist ) {
138
- return nil , err
138
+ return nil , fmt . Errorf ( "failed to stat remote path %s: %w" , path , err )
139
139
}
140
140
return info , nil
141
141
}
@@ -171,15 +171,15 @@ func sftpCopy(sftp *sftp.Client, sourcePath, destPath string) error {
171
171
if destStat == nil {
172
172
err = sftp .Mkdir (dest )
173
173
if err != nil {
174
- return err
174
+ return fmt . Errorf ( "failed to create remote directory %s: %w" , dest , err )
175
175
}
176
176
}
177
177
178
178
if ! strings .HasSuffix (sourcePath , "/" ) {
179
179
dest = filepath .Join (dest , filepath .Base (sourcePath ))
180
180
err = sftp .Mkdir (dest )
181
181
if err != nil {
182
- return err
182
+ return fmt . Errorf ( "failed to create remote directory %s: %w" , dest , err )
183
183
}
184
184
}
185
185
err = copyDir (sftp , sourcePath , dest )
@@ -202,12 +202,12 @@ func copyFile(sftp *sftp.Client, src, dst string) error {
202
202
203
203
remote , err := sftp .Create (dst )
204
204
if err != nil {
205
- return err
205
+ return fmt . Errorf ( "failed to create remote file %s: %w" , dst , err )
206
206
}
207
207
defer remote .Close ()
208
208
209
209
_ , err = remote .ReadFrom (local )
210
- return err
210
+ return fmt . Errorf ( "failed to copy file %s to remote path %s: %w" , src , dst , err )
211
211
}
212
212
213
213
// copyDir copies a directory recursively from the local file system to a remote host.
@@ -228,11 +228,13 @@ func copyDir(sftp *sftp.Client, src, dst string) error {
228
228
dirInfo , err := sftp .Stat (remotePath )
229
229
// sftp normalizes the error to os.ErrNotExist, see client.go: normaliseError.
230
230
if err != nil && ! errors .Is (err , os .ErrNotExist ) {
231
- return err
231
+ return fmt . Errorf ( "failed to stat remote path %s: %w" , remotePath , err )
232
232
}
233
233
234
234
if dirInfo == nil {
235
- return sftp .Mkdir (remotePath )
235
+ if err = sftp .Mkdir (remotePath ); err != nil {
236
+ return fmt .Errorf ("failed to create remote directory %s: %w" , remotePath , err )
237
+ }
236
238
} else if ! dirInfo .IsDir () {
237
239
return fmt .Errorf ("remote path %s exists but is not a directory" , remotePath )
238
240
}
0 commit comments