2 Star 1 Fork 0

mrwhen / gone

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
service.go 3.85 KB
一键复制 编辑 原始数据 按行查看 历史
哎呦-不错的猪公 提交于 2022-12-24 11:40 . fix: 修改module name
package app
import (
"errors"
"flag"
"path/filepath"
"gitee.com/mrwhen/gone/framework"
"gitee.com/mrwhen/gone/framework/util"
"github.com/google/uuid"
)
type OneApp struct {
container framework.Container // 服务容器
baseFolder string // 基础路径
appId string // 表示当前这个app的唯一id,可以用于分布式锁
configMap map[string]string // 配置加载
}
func NewOneApp(params ...interface{}) (interface{}, error) {
if len(params) != 2 {
return nil, errors.New("param error")
}
container := params[0].(framework.Container)
baseFolder := params[1].(string)
// 如果没有设置,则使用参数
if baseFolder == "" {
flag.StringVar(&baseFolder, "base_folder", "", "base_folder参数, 默认为当前路径")
flag.Parse()
}
appId := uuid.New().String()
configMap := map[string]string{}
return &OneApp{
container: container,
baseFolder: baseFolder,
appId: appId,
configMap: configMap,
}, nil
}
// Version 实现版本
func (oa *OneApp) Version() string {
return "0.0.1"
}
func (oa *OneApp) AppID() string {
return oa.appId
}
// BaseFolder 业务顶级路径
func (oa *OneApp) BaseFolder() string {
if oa.baseFolder != "" {
return oa.baseFolder
}
// var baseFolder string
// flag.StringVar(&baseFolder, "base_folder", "", "base_folder 参数, 默认为当前路径")
// flag.Parse()
// if baseFolder != "" {
// return baseFolder
// }
// 如果没有,就默认使用当前的路径
return util.GetExecDirectory()
}
// ConfigFolder 配置文件路径
func (oa *OneApp) ConfigFolder() string {
if val, ok := oa.configMap["config_folder"]; ok {
return val
}
return filepath.Join(oa.BaseFolder(), "config")
}
// StorageFolder 运行临时文件存储路径
func (oa *OneApp) StorageFolder() string {
if val, ok := oa.configMap["storage_folder"]; ok {
return val
}
return filepath.Join(oa.BaseFolder(), "storage")
}
func (oa *OneApp) LogFolder() string {
if val, ok := oa.configMap["log_folder"]; ok {
return val
}
return filepath.Join(oa.StorageFolder(), "log")
}
// HttpFolder http业务目录
func (oa *OneApp) HttpFolder() string {
if val, ok := oa.configMap["http_folder"]; ok {
return val
}
return filepath.Join(oa.BaseFolder(), "app", "http")
}
// ConsoleFolder 命令行程序目录
func (oa *OneApp) ConsoleFolder() string {
if val, ok := oa.configMap["console_folder"]; ok {
return val
}
return filepath.Join(oa.BaseFolder(), "app", "console")
}
// ProviderFolder 定义业务自己的服务提供者目录
func (oa *OneApp) ProviderFolder() string {
if val, ok := oa.configMap["provider_folder"]; ok {
return val
}
return filepath.Join(oa.BaseFolder(), "app", "provider")
}
// MiddlewareFolder 定义业务自己的中间件
func (oa *OneApp) MiddlewareFolder() string {
if val, ok := oa.configMap["middleware_folder"]; ok {
return val
}
return filepath.Join(oa.HttpFolder(), "middleware")
}
// CommandFolder 定义业务定义的命令
func (oa *OneApp) CommandFolder() string {
if val, ok := oa.configMap["command_folder"]; ok {
return val
}
return filepath.Join(oa.ConsoleFolder(), "command")
}
// RuntimeFolder 定义业务运行中间态信息目录
func (oa *OneApp) RuntimeFolder() string {
if val, ok := oa.configMap["runtime_folder"]; ok {
return val
}
return filepath.Join(oa.StorageFolder(), "runtime")
}
// TestFolder 定义测试文件目录
func (oa *OneApp) TestFolder() string {
if val, ok := oa.configMap["test_folder"]; ok {
return val
}
return filepath.Join(oa.ConsoleFolder(), "test")
}
// LoadAppConfig 加载配置map
func (app *OneApp) LoadAppConfig(kv map[string]string) {
for key, val := range kv {
app.configMap[key] = val
}
}
// AppFolder 代表app目录
func (app *OneApp) AppFolder() string {
if val, ok := app.configMap["app_folder"]; ok {
return val
}
return filepath.Join(app.BaseFolder(), "app")
}
Go
1
https://gitee.com/mrwhen/gone.git
git@gitee.com:mrwhen/gone.git
mrwhen
gone
gone
v0.0.1-alpha

搜索帮助

53164aa7 5694891 3bd8fe86 5694891