67 lines
1.4 KiB
Go
67 lines
1.4 KiB
Go
package app_ser
|
|
|
|
import (
|
|
"fmt"
|
|
"gitea.party/public-messag-service/config/logger"
|
|
"github.com/urfave/cli/v2"
|
|
"gopkg.in/yaml.v3"
|
|
"io/ioutil"
|
|
"os"
|
|
)
|
|
|
|
type BasicService struct {
|
|
RunBefore, InitBefore func() error
|
|
}
|
|
|
|
func (c *BasicService) ParserFile(cfg interface{}) error {
|
|
// 解析文件
|
|
execDir, err := os.Getwd()
|
|
if nil != err {
|
|
return fmt.Errorf("load config (err: %s)\n", err.Error())
|
|
}
|
|
fPath := fmt.Sprintf("%s%c%s", execDir, os.PathSeparator, "config.yaml")
|
|
fmt.Printf("load config (path: %s)\n", fPath)
|
|
fp, err := os.Open(fPath)
|
|
if nil != err {
|
|
return fmt.Errorf("load config (err: %s)\n", err.Error())
|
|
}
|
|
defer fp.Close()
|
|
d, err := ioutil.ReadAll(fp)
|
|
if nil != err {
|
|
return fmt.Errorf("load config (err: %s)\n", err.Error())
|
|
}
|
|
// 解析配置
|
|
if err = yaml.Unmarshal(d, cfg); err != nil {
|
|
return fmt.Errorf("parser config failed! %s", err.Error())
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (c *BasicService) Init(runMode string, cfg *AppConfig, ctx *cli.Context) (logger.Interface, error) {
|
|
// 设置环境
|
|
if !ctx.IsSet(CliAppEnv) {
|
|
for k := range _EnvMap {
|
|
if _EnvMap[k][0] == runMode {
|
|
cfg.SetEnv(k)
|
|
break
|
|
}
|
|
}
|
|
}
|
|
|
|
// 初始化日志
|
|
v := &logger.Console{}
|
|
switch cfg.Env() {
|
|
case EnvLocal:
|
|
v.Init(logger.Info, true, os.Stdout, os.Stderr)
|
|
case EnvDebug, EnvProd:
|
|
v.Init(logger.Warn, false, os.Stdout, os.Stderr)
|
|
}
|
|
|
|
if c.InitBefore != nil {
|
|
if err := c.InitBefore(); err != nil {
|
|
return nil, err
|
|
}
|
|
}
|
|
return v, nil
|
|
}
|