@ -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 )
}