cmd/swarm: fix error handling in 'swarm up' (#14557)
The error returned by client.Upload was previously being ignored due to becoming out of scope outside the if statement. This has been fixed by instead defining a function which returns the hash and error (rather than trying to set the hash in each branch of the if statement).
This commit is contained in:
parent
65ea913e29
commit
1e9f86b49e
@ -18,6 +18,7 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
@ -87,24 +88,32 @@ func upload(ctx *cli.Context) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
utils.Fatalf("Error opening file: %s", err)
|
utils.Fatalf("Error opening file: %s", err)
|
||||||
}
|
}
|
||||||
var hash string
|
|
||||||
|
// define a function which either uploads a directory or single file
|
||||||
|
// based on the type of the file being uploaded
|
||||||
|
var doUpload func() (hash string, err error)
|
||||||
if stat.IsDir() {
|
if stat.IsDir() {
|
||||||
if !recursive {
|
doUpload = func() (string, error) {
|
||||||
utils.Fatalf("Argument is a directory and recursive upload is disabled")
|
if !recursive {
|
||||||
|
return "", errors.New("Argument is a directory and recursive upload is disabled")
|
||||||
|
}
|
||||||
|
return client.UploadDirectory(file, defaultPath, "")
|
||||||
}
|
}
|
||||||
hash, err = client.UploadDirectory(file, defaultPath, "")
|
|
||||||
} else {
|
} else {
|
||||||
if mimeType == "" {
|
doUpload = func() (string, error) {
|
||||||
mimeType = detectMimeType(file)
|
f, err := swarm.Open(file)
|
||||||
|
if err != nil {
|
||||||
|
return "", fmt.Errorf("error opening file: %s", err)
|
||||||
|
}
|
||||||
|
defer f.Close()
|
||||||
|
if mimeType == "" {
|
||||||
|
mimeType = detectMimeType(file)
|
||||||
|
}
|
||||||
|
f.ContentType = mimeType
|
||||||
|
return client.Upload(f, "")
|
||||||
}
|
}
|
||||||
f, err := swarm.Open(file)
|
|
||||||
if err != nil {
|
|
||||||
utils.Fatalf("Error opening file: %s", err)
|
|
||||||
}
|
|
||||||
defer f.Close()
|
|
||||||
f.ContentType = mimeType
|
|
||||||
hash, err = client.Upload(f, "")
|
|
||||||
}
|
}
|
||||||
|
hash, err := doUpload()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
utils.Fatalf("Upload failed: %s", err)
|
utils.Fatalf("Upload failed: %s", err)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user