2025-04-30 16:35:25 +08:00

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
}