From 4e1c413e8236af3f3b9d06a7c023d257b816597c Mon Sep 17 00:00:00 2001 From: Juan Batiz-Benet Date: Sat, 5 Jul 2014 17:34:44 -0700 Subject: [PATCH] move tilde expnasion to util. --- config/config.go | 24 ++++++++++++------------ util/util.go | 16 ++++++++++++++++ 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/config/config.go b/config/config.go index c403fe282..8a5245020 100644 --- a/config/config.go +++ b/config/config.go @@ -2,8 +2,7 @@ package config import ( "os" - "os/user" - "strings" + u "github.com/jbenet/go-ipfs/util" ) type Identity struct { @@ -35,15 +34,10 @@ func LoadConfig(filename string) (*Config, error) { filename = defaultConfigFilePath } - // expand ~/ - if strings.HasPrefix(filename, "~/") { - usr, err := user.Current() - if err != nil { - return nil, err - } - - dir := usr.HomeDir + "/" - filename = strings.Replace(filename, "~/", dir, 1) + // tilde expansion on config file + filename, err := u.TildeExpansion(filename) + if err != nil { + return nil, err } // if nothing is there, write first conifg file. @@ -52,7 +46,13 @@ func LoadConfig(filename string) (*Config, error) { } var cfg Config - err := ReadConfigFile(filename, &cfg) + err = ReadConfigFile(filename, &cfg) + if err != nil { + return nil, err + } + + // tilde expansion on datastore path + cfg.Datastore.Path, err = u.TildeExpansion(cfg.Datastore.Path) if err != nil { return nil, err } diff --git a/util/util.go b/util/util.go index 6d0e3dd74..9ee662e36 100644 --- a/util/util.go +++ b/util/util.go @@ -4,6 +4,8 @@ import ( "fmt" mh "github.com/jbenet/go-multihash" "os" + "os/user" + "strings" ) var Debug bool @@ -17,6 +19,20 @@ func Hash(data []byte) (mh.Multihash, error) { return mh.Sum(data, mh.SHA2_256, -1) } +// tilde expansion +func TildeExpansion(filename string) (string, error) { + if strings.HasPrefix(filename, "~/") { + usr, err := user.Current() + if err != nil { + return "", err + } + + dir := usr.HomeDir + "/" + filename = strings.Replace(filename, "~/", dir, 1) + } + return filename, nil +} + // Shorthand printing functions. func PErr(format string, a ...interface{}) { fmt.Fprintf(os.Stderr, format, a...)