diff --git a/cmd/swarm/config.go b/cmd/swarm/config.go index ae4b5816e6..c2f885d252 100644 --- a/cmd/swarm/config.go +++ b/cmd/swarm/config.go @@ -124,7 +124,7 @@ func initSwarmNode(config *bzzapi.Config, stack *node.Node, ctx *cli.Context) { //get the account for the provided swarm account prvkey := getAccount(config.BzzAccount, ctx, stack) //set the resolved config path (geth --datadir) - config.Path = stack.InstanceDir() + config.Path = expandPath(stack.InstanceDir()) //finally, initialize the configuration config.Init(prvkey) //configuration phase completed here @@ -182,7 +182,7 @@ func cmdLineOverride(currentConfig *bzzapi.Config, ctx *cli.Context) *bzzapi.Con if ctx.GlobalIsSet(utils.DataDirFlag.Name) { if datadir := ctx.GlobalString(utils.DataDirFlag.Name); datadir != "" { - currentConfig.Path = datadir + currentConfig.Path = expandPath(datadir) } } @@ -226,6 +226,10 @@ func cmdLineOverride(currentConfig *bzzapi.Config, ctx *cli.Context) *bzzapi.Con if len(ensAPIs) == 1 && ensAPIs[0] == "" { ensAPIs = nil } + for i := range ensAPIs { + ensAPIs[i] = expandPath(ensAPIs[i]) + } + currentConfig.EnsAPIs = ensAPIs } @@ -268,7 +272,7 @@ func envVarsOverride(currentConfig *bzzapi.Config) (config *bzzapi.Config) { } if datadir := os.Getenv(GETH_ENV_DATADIR); datadir != "" { - currentConfig.Path = datadir + currentConfig.Path = expandPath(datadir) } bzzport := os.Getenv(SWARM_ENV_PORT) diff --git a/cmd/swarm/upload.go b/cmd/swarm/upload.go index 9eae2a3f80..f76cb1b984 100644 --- a/cmd/swarm/upload.go +++ b/cmd/swarm/upload.go @@ -138,6 +138,12 @@ func upload(ctx *cli.Context) { // 3. cleans the path, e.g. /a/b/../c -> /a/c // Note, it has limitations, e.g. ~someuser/tmp will not be expanded func expandPath(p string) string { + if i := strings.Index(p, ":"); i > 0 { + return p + } + if i := strings.Index(p, "@"); i > 0 { + return p + } if strings.HasPrefix(p, "~/") || strings.HasPrefix(p, "~\\") { if home := homeDir(); home != "" { p = home + p[1:]