aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cmd/swarm/upload.go35
1 files changed, 22 insertions, 13 deletions
diff --git a/cmd/swarm/upload.go b/cmd/swarm/upload.go
index 42673ae21..9f4c525bb 100644
--- a/cmd/swarm/upload.go
+++ b/cmd/swarm/upload.go
@@ -18,6 +18,7 @@
package main
import (
+ "errors"
"fmt"
"io"
"io/ioutil"
@@ -87,24 +88,32 @@ func upload(ctx *cli.Context) {
if err != nil {
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 !recursive {
- utils.Fatalf("Argument is a directory and recursive upload is disabled")
+ doUpload = func() (string, error) {
+ 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 {
- if mimeType == "" {
- mimeType = detectMimeType(file)
- }
- f, err := swarm.Open(file)
- if err != nil {
- utils.Fatalf("Error opening file: %s", err)
+ doUpload = func() (string, error) {
+ 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, "")
}
- defer f.Close()
- f.ContentType = mimeType
- hash, err = client.Upload(f, "")
}
+ hash, err := doUpload()
if err != nil {
utils.Fatalf("Upload failed: %s", err)
}