|
|
@@ -26,8 +26,10 @@ import (
|
|
|
"os/user"
|
|
|
"path"
|
|
|
"path/filepath"
|
|
|
+ "strconv"
|
|
|
"strings"
|
|
|
|
|
|
+ "github.com/ethereum/go-ethereum/log"
|
|
|
swarm "github.com/ethereum/go-ethereum/swarm/api/client"
|
|
|
|
|
|
"github.com/ethereum/go-ethereum/cmd/utils"
|
|
|
@@ -47,17 +49,24 @@ var upCommand = cli.Command{
|
|
|
func upload(ctx *cli.Context) {
|
|
|
args := ctx.Args()
|
|
|
var (
|
|
|
- bzzapi = strings.TrimRight(ctx.GlobalString(SwarmApiFlag.Name), "/")
|
|
|
- recursive = ctx.GlobalBool(SwarmRecursiveFlag.Name)
|
|
|
- wantManifest = ctx.GlobalBoolT(SwarmWantManifestFlag.Name)
|
|
|
- defaultPath = ctx.GlobalString(SwarmUploadDefaultPath.Name)
|
|
|
- fromStdin = ctx.GlobalBool(SwarmUpFromStdinFlag.Name)
|
|
|
- mimeType = ctx.GlobalString(SwarmUploadMimeType.Name)
|
|
|
- client = swarm.NewClient(bzzapi)
|
|
|
- toEncrypt = ctx.Bool(SwarmEncryptedFlag.Name)
|
|
|
- file string
|
|
|
+ bzzapi = strings.TrimRight(ctx.GlobalString(SwarmApiFlag.Name), "/")
|
|
|
+ recursive = ctx.GlobalBool(SwarmRecursiveFlag.Name)
|
|
|
+ wantManifest = ctx.GlobalBoolT(SwarmWantManifestFlag.Name)
|
|
|
+ defaultPath = ctx.GlobalString(SwarmUploadDefaultPath.Name)
|
|
|
+ fromStdin = ctx.GlobalBool(SwarmUpFromStdinFlag.Name)
|
|
|
+ mimeType = ctx.GlobalString(SwarmUploadMimeType.Name)
|
|
|
+ client = swarm.NewClient(bzzapi)
|
|
|
+ toEncrypt = ctx.Bool(SwarmEncryptedFlag.Name)
|
|
|
+ autoDefaultPath = false
|
|
|
+ file string
|
|
|
)
|
|
|
-
|
|
|
+ if autoDefaultPathString := os.Getenv(SWARM_AUTO_DEFAULTPATH); autoDefaultPathString != "" {
|
|
|
+ b, err := strconv.ParseBool(autoDefaultPathString)
|
|
|
+ if err != nil {
|
|
|
+ utils.Fatalf("invalid environment variable %s: %v", SWARM_AUTO_DEFAULTPATH, err)
|
|
|
+ }
|
|
|
+ autoDefaultPath = b
|
|
|
+ }
|
|
|
if len(args) != 1 {
|
|
|
if fromStdin {
|
|
|
tmp, err := ioutil.TempFile("", "swarm-stdin")
|
|
|
@@ -106,6 +115,15 @@ func upload(ctx *cli.Context) {
|
|
|
if !recursive {
|
|
|
return "", errors.New("Argument is a directory and recursive upload is disabled")
|
|
|
}
|
|
|
+ if autoDefaultPath && defaultPath == "" {
|
|
|
+ defaultEntryCandidate := path.Join(file, "index.html")
|
|
|
+ log.Debug("trying to find default path", "path", defaultEntryCandidate)
|
|
|
+ defaultEntryStat, err := os.Stat(defaultEntryCandidate)
|
|
|
+ if err == nil && !defaultEntryStat.IsDir() {
|
|
|
+ log.Debug("setting auto detected default path", "path", defaultEntryCandidate)
|
|
|
+ defaultPath = defaultEntryCandidate
|
|
|
+ }
|
|
|
+ }
|
|
|
if defaultPath != "" {
|
|
|
// construct absolute default path
|
|
|
absDefaultPath, _ := filepath.Abs(defaultPath)
|