Move OS-specific funcs to path.go
This commit is contained in:
parent
82a41a198e
commit
c0741edc34
|
@ -3,14 +3,8 @@ package common
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"math/big"
|
"math/big"
|
||||||
"os"
|
|
||||||
"os/user"
|
|
||||||
"path"
|
|
||||||
"path/filepath"
|
|
||||||
"runtime"
|
"runtime"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/kardianos/osext"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// MakeName creates a node name that follows the ethereum convention
|
// 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())
|
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
|
// Common big integers often used
|
||||||
var (
|
var (
|
||||||
Big1 = big.NewInt(1)
|
Big1 = big.NewInt(1)
|
||||||
|
|
|
@ -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), "/")
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -5,7 +5,11 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"os/user"
|
"os/user"
|
||||||
"path"
|
"path"
|
||||||
|
"path/filepath"
|
||||||
|
"runtime"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/kardianos/osext"
|
||||||
)
|
)
|
||||||
|
|
||||||
func ExpandHomePath(p string) (path string) {
|
func ExpandHomePath(p string) (path string) {
|
||||||
|
@ -66,3 +70,59 @@ func AbsolutePath(Datadir string, filename string) string {
|
||||||
}
|
}
|
||||||
return path.Join(Datadir, filename)
|
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
|
||||||
|
}
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
package common
|
package common
|
||||||
|
|
||||||
import (
|
import (
|
||||||
// "os"
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
checker "gopkg.in/check.v1"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestGoodFile(t *testing.T) {
|
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), "/")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue