代码拉取完成,页面将自动刷新
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")
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。