From 196e2dbcce64131f4873db9539db6b52b46468f2 Mon Sep 17 00:00:00 2001 From: gaoshuaixing Date: Mon, 25 Sep 2023 19:02:07 +0800 Subject: [PATCH] go --- electron/config/bin.js | 2 +- go/eapp/app.go | 82 +++++++++++++++++++++++++++++++++--------- go/eerror/code.go | 7 ++++ go/eerror/error.go | 28 +++++++++++++++ go/ehelper/helper.go | 15 -------- go/elog/logger.go | 21 +++++++---- go/eutil/file.go | 9 +++++ go/go.mod | 1 + go/go.sum | 2 ++ go/main.go | 2 +- 10 files changed, 129 insertions(+), 40 deletions(-) create mode 100644 go/eerror/code.go create mode 100644 go/eerror/error.go delete mode 100644 go/ehelper/helper.go create mode 100644 go/eutil/file.go diff --git a/electron/config/bin.js b/electron/config/bin.js index 114028f..365efe0 100644 --- a/electron/config/bin.js +++ b/electron/config/bin.js @@ -82,7 +82,7 @@ module.exports = { go: { directory: './go', cmd: 'go', - args: ['run', '-tags=fts5', './main.go', '--wd=../', '--env=dev', '--port=6789'], + args: ['run', './main.go', '--ee-env=dev'], }, }, }; \ No newline at end of file diff --git a/go/eapp/app.go b/go/eapp/app.go index 12a7ad2..feae856 100644 --- a/go/eapp/app.go +++ b/go/eapp/app.go @@ -3,6 +3,7 @@ package eapp import ( "bytes" "errors" + "flag" "fmt" "os" "os/exec" @@ -10,7 +11,7 @@ import ( "path/filepath" "strings" - "electron-egg/elog" + "electron-egg/eerror" "electron-egg/eutil" ) @@ -19,31 +20,46 @@ const ( ) var ( - ENV = "dev" // 'dev' 'prod' + ENV = "prod" // 'dev' 'prod' // progressBar float64 // 0 ~ 100 // progressDesc string // description HttpServer = false + AppName = "" ) 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 + BaseDir, _ = os.Getwd() + HomeDir string // electron-egg home directory + PublicDir string // electron-egg public directory + UserHomeDir string // OS user home directory + AppUserDataDir string // electron app.getPath('userData') ) -func init() { - HomeDir = filepath.Join(BaseDir, "..") - PublicDir = filepath.Join(HomeDir, "public") - UserHomeDir, _ = getUserHomeDir() -} +func New() { + fmt.Println("new electron-egg for go") -func Run() { - fmt.Println("result:") - logger := elog.GetLogger() + eeEnv := flag.String("ee-env", "prod", "dev/prod") + eeName := flag.String("ee-name", "", "app name") + eeAppUserData := flag.String("ee-app-user-data", "", "The folder where you store your application configuration files") + flag.Parse() + + ENV = *eeEnv + AppName = *eeName + AppUserDataDir = *eeAppUserData + + if AppName == "" { + eerror.Throw("The software ee-name must be set") + } + + fmt.Println("ENV:", ENV) + fmt.Println("AppName:", AppName) + fmt.Println("AppUserDataDir:", AppUserDataDir) + + initDirectory() + + //logger := elog.GetLogger() //logger := elog.CreateLogger() - logger.Infof("hconf example success tttt") + // logger.Infof("hconf example success tttt") } // Pwd gets the path of current working directory. @@ -54,6 +70,40 @@ func Pwd() string { return filepath.Dir(pwd) } +func initDirectory() { + HomeDir = filepath.Join(BaseDir, "..") + PublicDir = filepath.Join(HomeDir, "public") + UserHomeDir, _ = getUserHomeDir() + userHomeConfDir := filepath.Join(UserHomeDir, ".config", AppName) + //workDataConf := filepath.Join(userHomeConfDir, "workdata.json") + if !eutil.FileIsExist(userHomeConfDir) { + if err := os.MkdirAll(userHomeConfDir, 0755); err != nil && !os.IsExist(err) { + errMsg := fmt.Sprintf("create user home conf folder [%s] failed: %s", userHomeConfDir, err) + eerror.Throw(errMsg) + } + } + + logDir := filepath.Join(HomeDir, "logs") + if ENV == "prod" { + logDir = filepath.Join(AppUserDataDir, "logs") + if AppUserDataDir != "" && eutil.FileIsExist(AppUserDataDir) { + logDir = filepath.Join(AppUserDataDir, "logs") + } + } + if !eutil.FileIsExist(logDir) { + if err := os.MkdirAll(logDir, 0755); err != nil && !os.IsExist(err) { + errMsg := fmt.Sprintf("create logs folder [%s] failed: %s", logDir, err) + eerror.Throw(errMsg) + } + } + + fmt.Println("HomeDir:", HomeDir) + fmt.Println("PublicDir:", PublicDir) + fmt.Println("UserHomeDir:", UserHomeDir) + fmt.Println("userHomeConfDir:", userHomeConfDir) + fmt.Println("logDir:", logDir) +} + func getUserHomeDir() (string, error) { user, err := user.Current() if nil == err { diff --git a/go/eerror/code.go b/go/eerror/code.go new file mode 100644 index 0000000..6c7f9dc --- /dev/null +++ b/go/eerror/code.go @@ -0,0 +1,7 @@ +package eerror + +const ( + ErrorAppNameIsEmpty = 1001 + ErrorCreateUserHomeConfDir = 1002 + ErrorCreateLogDir = 1003 +) diff --git a/go/eerror/error.go b/go/eerror/error.go new file mode 100644 index 0000000..a33c9fa --- /dev/null +++ b/go/eerror/error.go @@ -0,0 +1,28 @@ +package eerror + +import ( + "fmt" + "os" + + E "github.com/pkg/errors" +) + +func Throw(msg string) { + throw(msg, nil, 0) +} + +func ThrowWrap(msg string, err error) { + throw(msg, err, 0) +} + +func throw(msg string, err error, code int) { + var errInfo error + if err != nil { + errInfo = E.Wrap(err, msg) + } else { + errInfo = E.New(msg) + } + + fmt.Printf("Error: %+v", errInfo) + os.Exit(code) +} diff --git a/go/ehelper/helper.go b/go/ehelper/helper.go deleted file mode 100644 index 9a52a85..0000000 --- a/go/ehelper/helper.go +++ /dev/null @@ -1,15 +0,0 @@ -package ehelper - -import ( - "fmt" - "os" - "strings" -) - -func GetEnv() { - envs := os.Environ() - for _, env := range envs { - cache := strings.Split(env, "=") - fmt.Printf("%v = %v\n", cache[0], cache[1]) - } -} diff --git a/go/elog/logger.go b/go/elog/logger.go index 00b69ea..f203502 100644 --- a/go/elog/logger.go +++ b/go/elog/logger.go @@ -2,6 +2,7 @@ package elog import ( "fmt" + stdlog "log" "os" "path/filepath" @@ -11,10 +12,11 @@ import ( ) var ( + LogDir string // electron-egg logs directory + LogName = "ee-go.log" + LogPath string zlogger *zap.Logger logger *zap.SugaredLogger - LogPath string - LogName = "ee-go.log" ) type LogConfig struct { @@ -26,12 +28,17 @@ type LogConfig struct { } func init() { - Mode := "dev" - if Mode == "dev" { - LogPath = filepath.Join(WorkingDir, "logs", LogName) - } else { - LogPath = filepath.Join(TempDir, LogName) + dir, err := os.Getwd() + if err != nil { + stdlog.Printf("get current directory failed: %s", err) + dir = "./" } + LogDir = dir + LogPath = filepath.Join(LogDir, LogName) +} + +func SetLogPath(path string) { + LogPath = path } // 负责设置 encoding 的日志格式 diff --git a/go/eutil/file.go b/go/eutil/file.go new file mode 100644 index 0000000..5dc78e1 --- /dev/null +++ b/go/eutil/file.go @@ -0,0 +1,9 @@ +package eutil + +import "os" + +func FileIsExist(path string) bool { + _, err := os.Stat(path) + + return err == nil || os.IsExist(err) +} diff --git a/go/go.mod b/go/go.mod index 76ae21b..fc49847 100644 --- a/go/go.mod +++ b/go/go.mod @@ -4,6 +4,7 @@ go 1.20 require ( github.com/natefinch/lumberjack v2.0.0+incompatible + github.com/pkg/errors v0.9.1 github.com/shirou/gopsutil/v3 v3.23.8 go.uber.org/zap v1.26.0 ) diff --git a/go/go.sum b/go/go.sum index aad41af..643c0ca 100644 --- a/go/go.sum +++ b/go/go.sum @@ -12,6 +12,8 @@ github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ 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/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= 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= diff --git a/go/main.go b/go/main.go index e8f3219..91b186f 100644 --- a/go/main.go +++ b/go/main.go @@ -5,5 +5,5 @@ import ( ) func main() { - eapp.Run() + eapp.New() }