diff --git a/go/eapp/app.go b/go/eapp/app.go new file mode 100644 index 0000000..12a7ad2 --- /dev/null +++ b/go/eapp/app.go @@ -0,0 +1,106 @@ +package eapp + +import ( + "bytes" + "errors" + "fmt" + "os" + "os/exec" + "os/user" + "path/filepath" + "strings" + + "electron-egg/elog" + "electron-egg/eutil" +) + +const ( + Version = "0.1.0" +) + +var ( + ENV = "dev" // 'dev' 'prod' + // progressBar float64 // 0 ~ 100 + // progressDesc string // description + HttpServer = false +) + +var ( + BaseDir, _ = os.Getwd() + HomeDir string // electron-egg home directory + PublicDir string // electron-egg public directory + LogDir string // electron-egg logs directory + UserHomeDir string // OS user home directory +) + +func init() { + HomeDir = filepath.Join(BaseDir, "..") + PublicDir = filepath.Join(HomeDir, "public") + UserHomeDir, _ = getUserHomeDir() +} + +func Run() { + fmt.Println("result:") + logger := elog.GetLogger() + //logger := elog.CreateLogger() + logger.Infof("hconf example success tttt") +} + +// Pwd gets the path of current working directory. +func Pwd() string { + file, _ := exec.LookPath(os.Args[0]) + pwd, _ := filepath.Abs(file) + + return filepath.Dir(pwd) +} + +func getUserHomeDir() (string, error) { + user, err := user.Current() + if nil == err { + return user.HomeDir, nil + } + + // cross compile support + if eutil.IsWindows() { + return homeWindows() + } + + // Unix-like system, so just assume Unix + return homeUnix() +} + +func homeUnix() (string, error) { + // First prefer the HOME environmental variable + if home := os.Getenv("HOME"); home != "" { + return home, nil + } + + // If that fails, try the shell + var stdout bytes.Buffer + cmd := exec.Command("sh", "-c", "eval echo ~$USER") + cmd.Stdout = &stdout + if err := cmd.Run(); err != nil { + return "", err + } + + result := strings.TrimSpace(stdout.String()) + if result == "" { + return "", errors.New("blank output when reading home directory") + } + + return result, nil +} + +func homeWindows() (string, error) { + drive := os.Getenv("HOMEDRIVE") + path := os.Getenv("HOMEPATH") + home := drive + path + if drive == "" || path == "" { + home = os.Getenv("USERPROFILE") + } + if home == "" { + return "", errors.New("HOMEDRIVE, HOMEPATH, and USERPROFILE are blank") + } + + return home, nil +} diff --git a/go/eboot/work.go b/go/eboot/work.go deleted file mode 100644 index 975795c..0000000 --- a/go/eboot/work.go +++ /dev/null @@ -1,25 +0,0 @@ -package eboot - -import ( - "fmt" - - "electron-egg/elog" -) - -const ( - Version = "0.1.0" -) - -var ( - ENV = "dev" // 'dev' 'prod' - // progressBar float64 // 0 ~ 100 - // progressDesc string // description - HttpServer = false -) - -func Run() { - fmt.Println("result:") - logger := elog.GetLogger() - //logger := elog.CreateLogger() - logger.Infof("hconf example success tttt") -} diff --git a/go/helper/helper.go b/go/ehelper/helper.go similarity index 92% rename from go/helper/helper.go rename to go/ehelper/helper.go index 2864c18..9a52a85 100644 --- a/go/helper/helper.go +++ b/go/ehelper/helper.go @@ -1,4 +1,4 @@ -package helper +package ehelper import ( "fmt" diff --git a/go/elog/logger.go b/go/elog/logger.go index 0313625..00b69ea 100644 --- a/go/elog/logger.go +++ b/go/elog/logger.go @@ -3,7 +3,7 @@ package elog import ( "fmt" "os" - "time" + "path/filepath" "github.com/natefinch/lumberjack" "go.uber.org/zap" @@ -14,6 +14,7 @@ var ( zlogger *zap.Logger logger *zap.SugaredLogger LogPath string + LogName = "ee-go.log" ) type LogConfig struct { @@ -25,7 +26,12 @@ type LogConfig struct { } func init() { - LogPath = + Mode := "dev" + if Mode == "dev" { + LogPath = filepath.Join(WorkingDir, "logs", LogName) + } else { + LogPath = filepath.Join(TempDir, LogName) + } } // 负责设置 encoding 的日志格式 diff --git a/go/eutil/os.go b/go/eutil/os.go new file mode 100644 index 0000000..f1cb268 --- /dev/null +++ b/go/eutil/os.go @@ -0,0 +1,31 @@ +package eutil + +import ( + "runtime" + + "github.com/shirou/gopsutil/v3/host" +) + +func IsWindows() bool { + return runtime.GOOS == "windows" +} + +func IsLinux() bool { + return runtime.GOOS == "linux" +} + +func IsMacOS() bool { + return runtime.GOOS == "darwin" +} + +func IsDarwin() bool { + return runtime.GOOS == "darwin" +} + +func OSPlatform() (plat string) { + plat, _, _, err := host.PlatformInformation() + if nil != err { + return "Unknown" + } + return +} diff --git a/go/util/time.go b/go/eutil/time.go similarity index 93% rename from go/util/time.go rename to go/eutil/time.go index 2958b6b..498f7e1 100644 --- a/go/util/time.go +++ b/go/eutil/time.go @@ -1,4 +1,4 @@ -package util +package eutil import ( "fmt" diff --git a/go/go.mod b/go/go.mod index 85c29fe..76ae21b 100644 --- a/go/go.mod +++ b/go/go.mod @@ -4,12 +4,21 @@ go 1.20 require ( github.com/natefinch/lumberjack v2.0.0+incompatible + github.com/shirou/gopsutil/v3 v3.23.8 go.uber.org/zap v1.26.0 ) require ( github.com/BurntSushi/toml v1.3.2 // indirect + github.com/go-ole/go-ole v1.2.6 // indirect + github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect + github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect + github.com/shoenig/go-m1cpu v0.1.6 // indirect + github.com/tklauser/go-sysconf v0.3.12 // indirect + github.com/tklauser/numcpus v0.6.1 // indirect + github.com/yusufpapurcu/wmi v1.2.3 // indirect go.uber.org/multierr v1.10.0 // indirect + golang.org/x/sys v0.11.0 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect ) diff --git a/go/go.sum b/go/go.sum index 707f678..aad41af 100644 --- a/go/go.sum +++ b/go/go.sum @@ -1,18 +1,56 @@ github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= +github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= +github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= github.com/natefinch/lumberjack v2.0.0+incompatible h1:4QJd3OLAMgj7ph+yZTuX13Ld4UpgHp07nNdFX7mqFfM= github.com/natefinch/lumberjack v2.0.0+incompatible/go.mod h1:Wi9p2TTF5DG5oU+6YfsmYQpsTIOm0B1VNzQg9Mw6nPk= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= +github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= +github.com/shirou/gopsutil/v3 v3.23.8 h1:xnATPiybo6GgdRoC4YoGnxXZFRc3dqQTGi73oLvvBrE= +github.com/shirou/gopsutil/v3 v3.23.8/go.mod h1:7hmCaBn+2ZwaZOr6jmPBZDfawwMGuo1id3C6aM8EDqQ= +github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM= +github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ= +github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU= +github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= +github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= +github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= +github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= +github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw= +github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk= go.uber.org/multierr v1.10.0 h1:S0h4aNzvfcFsC3dRF1jLoaov7oRaKqRGC/pUEJ2yvPQ= go.uber.org/multierr v1.10.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= +golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/go/main.go b/go/main.go index ddfacd6..e8f3219 100644 --- a/go/main.go +++ b/go/main.go @@ -1,9 +1,9 @@ package main import ( - "electron-egg/eboot" + "electron-egg/eapp" ) func main() { - eboot.Run() + eapp.Run() }