From c0741edc34c3d09b69c7a64a97aaca0e7759add1 Mon Sep 17 00:00:00 2001 From: Taylor Gerring Date: Sun, 22 Mar 2015 13:44:17 +0100 Subject: [PATCH] Move OS-specific funcs to path.go --- common/common.go | 62 ------------------------------------------- common/common_test.go | 35 ------------------------ common/path.go | 60 +++++++++++++++++++++++++++++++++++++++++ common/path_test.go | 32 +++++++++++++++++++++- 4 files changed, 91 insertions(+), 98 deletions(-) delete mode 100644 common/common_test.go diff --git a/common/common.go b/common/common.go index 9045151f52..b5eacfdb72 100644 --- a/common/common.go +++ b/common/common.go @@ -3,14 +3,8 @@ package common import ( "fmt" "math/big" - "os" - "os/user" - "path" - "path/filepath" "runtime" "time" - - "github.com/kardianos/osext" ) // MakeName creates a node name that follows the ethereum convention @@ -20,62 +14,6 @@ func MakeName(name, version string) string { return fmt.Sprintf("%s/v%s/%s/%s", name, version, runtime.GOOS, runtime.Version()) } -func DefaultAssetPath() string { - var assetPath string - pwd, _ := os.Getwd() - srcdir := path.Join(os.Getenv("GOPATH"), "src", "github.com", "ethereum", "go-ethereum", "cmd", "mist") - - // If the current working directory is the go-ethereum dir - // assume a debug build and use the source directory as - // asset directory. - if pwd == srcdir { - assetPath = path.Join(pwd, "assets") - } else { - switch runtime.GOOS { - case "darwin": - // Get Binary Directory - exedir, _ := osext.ExecutableFolder() - assetPath = filepath.Join(exedir, "../Resources") - case "linux": - assetPath = "/usr/share/mist" - case "windows": - assetPath = "./assets" - default: - assetPath = "." - } - } - - // Check if the assetPath exists. If not, try the source directory - // This happens when binary is run from outside cmd/mist directory - if _, err := os.Stat(assetPath); os.IsNotExist(err) { - assetPath = path.Join(srcdir, "assets") - } - - return assetPath -} - -func DefaultDataDir() string { - usr, _ := user.Current() - if runtime.GOOS == "darwin" { - return path.Join(usr.HomeDir, "Library/Ethereum") - } else if runtime.GOOS == "windows" { - return path.Join(usr.HomeDir, "AppData/Roaming/Ethereum") - } else { - return path.Join(usr.HomeDir, ".ethereum") - } -} - -func IsWindows() bool { - return runtime.GOOS == "windows" -} - -func WindonizePath(path string) string { - if string(path[0]) == "/" && IsWindows() { - path = path[1:] - } - return path -} - // Common big integers often used var ( Big1 = big.NewInt(1) diff --git a/common/common_test.go b/common/common_test.go deleted file mode 100644 index a94dd17920..0000000000 --- a/common/common_test.go +++ /dev/null @@ -1,35 +0,0 @@ -package common - -import ( - "os" - - checker "gopkg.in/check.v1" -) - -type CommonSuite struct{} - -var _ = checker.Suite(&CommonSuite{}) - -func (s *CommonSuite) TestOS(c *checker.C) { - expwin := (os.PathSeparator == '\\' && os.PathListSeparator == ';') - res := IsWindows() - - if !expwin { - c.Assert(res, checker.Equals, expwin, checker.Commentf("IsWindows is", res, "but path is", os.PathSeparator)) - } else { - c.Assert(res, checker.Not(checker.Equals), expwin, checker.Commentf("IsWindows is", res, "but path is", os.PathSeparator)) - } -} - -func (s *CommonSuite) TestWindonziePath(c *checker.C) { - iswindowspath := os.PathSeparator == '\\' - path := "/opt/eth/test/file.ext" - res := WindonizePath(path) - ressep := string(res[0]) - - if !iswindowspath { - c.Assert(ressep, checker.Equals, "/") - } else { - c.Assert(ressep, checker.Not(checker.Equals), "/") - } -} diff --git a/common/path.go b/common/path.go index 680c8366c2..8b95a2be6d 100644 --- a/common/path.go +++ b/common/path.go @@ -5,7 +5,11 @@ import ( "os" "os/user" "path" + "path/filepath" + "runtime" "strings" + + "github.com/kardianos/osext" ) func ExpandHomePath(p string) (path string) { @@ -66,3 +70,59 @@ func AbsolutePath(Datadir string, filename string) string { } return path.Join(Datadir, filename) } + +func DefaultAssetPath() string { + var assetPath string + pwd, _ := os.Getwd() + srcdir := path.Join(os.Getenv("GOPATH"), "src", "github.com", "ethereum", "go-ethereum", "cmd", "mist") + + // If the current working directory is the go-ethereum dir + // assume a debug build and use the source directory as + // asset directory. + if pwd == srcdir { + assetPath = path.Join(pwd, "assets") + } else { + switch runtime.GOOS { + case "darwin": + // Get Binary Directory + exedir, _ := osext.ExecutableFolder() + assetPath = filepath.Join(exedir, "../Resources") + case "linux": + assetPath = "/usr/share/mist" + case "windows": + assetPath = "./assets" + default: + assetPath = "." + } + } + + // Check if the assetPath exists. If not, try the source directory + // This happens when binary is run from outside cmd/mist directory + if _, err := os.Stat(assetPath); os.IsNotExist(err) { + assetPath = path.Join(srcdir, "assets") + } + + return assetPath +} + +func DefaultDataDir() string { + usr, _ := user.Current() + if runtime.GOOS == "darwin" { + return path.Join(usr.HomeDir, "Library/Ethereum") + } else if runtime.GOOS == "windows" { + return path.Join(usr.HomeDir, "AppData/Roaming/Ethereum") + } else { + return path.Join(usr.HomeDir, ".ethereum") + } +} + +func IsWindows() bool { + return runtime.GOOS == "windows" +} + +func WindonizePath(path string) string { + if string(path[0]) == "/" && IsWindows() { + path = path[1:] + } + return path +} diff --git a/common/path_test.go b/common/path_test.go index 4af1bd7af7..c831d1a57d 100644 --- a/common/path_test.go +++ b/common/path_test.go @@ -1,8 +1,10 @@ package common import ( - // "os" + "os" "testing" + + checker "gopkg.in/check.v1" ) func TestGoodFile(t *testing.T) { @@ -49,3 +51,31 @@ func TestBadFile(t *testing.T) { } } + +type CommonSuite struct{} + +var _ = checker.Suite(&CommonSuite{}) + +func (s *CommonSuite) TestOS(c *checker.C) { + expwin := (os.PathSeparator == '\\' && os.PathListSeparator == ';') + res := IsWindows() + + if !expwin { + c.Assert(res, checker.Equals, expwin, checker.Commentf("IsWindows is", res, "but path is", os.PathSeparator)) + } else { + c.Assert(res, checker.Not(checker.Equals), expwin, checker.Commentf("IsWindows is", res, "but path is", os.PathSeparator)) + } +} + +func (s *CommonSuite) TestWindonziePath(c *checker.C) { + iswindowspath := os.PathSeparator == '\\' + path := "/opt/eth/test/file.ext" + res := WindonizePath(path) + ressep := string(res[0]) + + if !iswindowspath { + c.Assert(ressep, checker.Equals, "/") + } else { + c.Assert(ressep, checker.Not(checker.Equals), "/") + } +}