命令行工具 + 多语言支持
This commit is contained in:
parent
85eeab8c19
commit
95a0d1e159
9 changed files with 112 additions and 36 deletions
|
|
@ -32,6 +32,14 @@ func Load(cfg config.Config) {
|
|||
}
|
||||
}
|
||||
|
||||
// L 语言包
|
||||
func L(word string) string {
|
||||
if trans, has := share.App.L[word]; has {
|
||||
return trans
|
||||
}
|
||||
return word
|
||||
}
|
||||
|
||||
// Init 应用初始化
|
||||
func Init(cfg config.Config) {
|
||||
|
||||
|
|
|
|||
|
|
@ -6,8 +6,8 @@ import (
|
|||
|
||||
var helpCmd = &cobra.Command{
|
||||
Use: "help",
|
||||
Short: "显示命令帮助文档",
|
||||
Long: `显示命令帮助文档`,
|
||||
Short: L("Help for yao"),
|
||||
Long: L("Help for yao"),
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
cmd.Help()
|
||||
},
|
||||
|
|
|
|||
|
|
@ -10,8 +10,8 @@ import (
|
|||
|
||||
var inspectCmd = &cobra.Command{
|
||||
Use: "inspect",
|
||||
Short: "显示当前配置信息",
|
||||
Long: `显示当前配置信息`,
|
||||
Short: L("Show app configure"),
|
||||
Long: L("Show app configure"),
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
Boot()
|
||||
res := maps.Map{
|
||||
|
|
|
|||
|
|
@ -13,8 +13,8 @@ import (
|
|||
var name string
|
||||
var migrateCmd = &cobra.Command{
|
||||
Use: "migrate",
|
||||
Short: "更新数据结构",
|
||||
Long: `更新数据库结构`,
|
||||
Short: L("Update database schema"),
|
||||
Long: L("Update database schema"),
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
Boot()
|
||||
// 加载数据模型
|
||||
|
|
|
|||
38
cmd/root.go
38
cmd/root.go
|
|
@ -7,21 +7,47 @@ import (
|
|||
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/yaoapp/yao/config"
|
||||
"github.com/yaoapp/yao/share"
|
||||
)
|
||||
|
||||
var appPath string
|
||||
var envFile string
|
||||
|
||||
var lang = os.Getenv("YAO_LANG")
|
||||
var langs = map[string]string{
|
||||
"Start Engine": "启动象传应用引擎",
|
||||
"One or more arguments are not correct": "参数错误",
|
||||
"Application directory": "指定应用路径",
|
||||
"Environment file": "指定环境变量文件",
|
||||
"Help for yao": "显示命令帮助文档",
|
||||
"Show app configure": "显示应用配置信息",
|
||||
"Update database schema": "更新数据库结构",
|
||||
"Execute process": "更新数据库结构",
|
||||
"Show version": "显示当前版本号",
|
||||
}
|
||||
|
||||
// L 多语言切换
|
||||
func L(words string) string {
|
||||
if lang == "" {
|
||||
return words
|
||||
}
|
||||
|
||||
if trans, has := langs[words]; has {
|
||||
return trans
|
||||
}
|
||||
return words
|
||||
}
|
||||
|
||||
var rootCmd = &cobra.Command{
|
||||
Use: "xiang",
|
||||
Short: "象传应用引擎命令行工具",
|
||||
Long: `象传应用引擎命令行工具`,
|
||||
Use: share.BUILDNAME,
|
||||
Short: "Yao App Engine",
|
||||
Long: `Yao App Engine`,
|
||||
Args: cobra.MinimumNArgs(1),
|
||||
CompletionOptions: cobra.CompletionOptions{
|
||||
DisableDefaultCmd: true,
|
||||
},
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
fmt.Fprintln(os.Stderr, "参数错误", args)
|
||||
fmt.Fprintln(os.Stderr, L("One or more arguments are not correct"), args)
|
||||
os.Exit(1)
|
||||
},
|
||||
}
|
||||
|
|
@ -36,8 +62,8 @@ func init() {
|
|||
runCmd,
|
||||
)
|
||||
rootCmd.SetHelpCommand(helpCmd)
|
||||
rootCmd.PersistentFlags().StringVarP(&appPath, "app", "a", "", "指定应用目录")
|
||||
rootCmd.PersistentFlags().StringVarP(&envFile, "env", "e", "", "指定环境变量文件")
|
||||
rootCmd.PersistentFlags().StringVarP(&appPath, "app", "a", "", L("Application directory"))
|
||||
rootCmd.PersistentFlags().StringVarP(&envFile, "env", "e", "", L("Environment file"))
|
||||
}
|
||||
|
||||
// Execute 运行Root
|
||||
|
|
|
|||
|
|
@ -15,8 +15,8 @@ import (
|
|||
|
||||
var runCmd = &cobra.Command{
|
||||
Use: "run",
|
||||
Short: "运行处理器",
|
||||
Long: `运行处理器`,
|
||||
Short: L("Execute process"),
|
||||
Long: L("Execute process"),
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
defer gou.KillPlugins()
|
||||
Boot()
|
||||
|
|
|
|||
14
cmd/start.go
14
cmd/start.go
|
|
@ -2,6 +2,7 @@ package cmd
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
|
|
@ -16,8 +17,8 @@ import (
|
|||
|
||||
var startCmd = &cobra.Command{
|
||||
Use: "start",
|
||||
Short: "启动象传应用引擎",
|
||||
Long: `启动象传应用引擎`,
|
||||
Short: L("Start Engine"),
|
||||
Long: L("Start Engine"),
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
defer service.Stop(func() { fmt.Println("服务已关闭") })
|
||||
Boot()
|
||||
|
|
@ -28,11 +29,14 @@ var startCmd = &cobra.Command{
|
|||
mode = "\n"
|
||||
}
|
||||
|
||||
fmt.Printf(color.GreenString("象传应用引擎 v%s %s", share.VERSION, mode))
|
||||
|
||||
engine.Load(config.Conf) // 加载数据模型 API 等
|
||||
err := engine.Load(config.Conf) // 加载脚本等
|
||||
if err != nil {
|
||||
fmt.Printf(color.RedString("启动失败: %s\n", err.Error()))
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
// 打印应用目录信息
|
||||
fmt.Printf(color.GreenString("象传应用引擎 v%s %s", share.VERSION, mode))
|
||||
fmt.Printf(color.WhiteString("\n---------------------------------"))
|
||||
fmt.Printf(color.GreenString("\n应用名称: %s v%s", share.App.Name, share.App.Version))
|
||||
fmt.Printf(color.GreenString("\n应用根目录: %s", config.Conf.Root))
|
||||
|
|
|
|||
|
|
@ -9,8 +9,8 @@ import (
|
|||
|
||||
var versionCmd = &cobra.Command{
|
||||
Use: "version",
|
||||
Short: "显示当前版本号",
|
||||
Long: `显示当前版本号`,
|
||||
Short: L("Show version"),
|
||||
Long: L("Show version"),
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
// Do Stuff Here
|
||||
fmt.Println(share.VERSION)
|
||||
|
|
|
|||
|
|
@ -25,38 +25,76 @@ import (
|
|||
)
|
||||
|
||||
// Load 根据配置加载 API, FLow, Model, Plugin
|
||||
func Load(cfg config.Config) {
|
||||
func Load(cfg config.Config) (err error) {
|
||||
defer func() { err = exception.Catch(recover()) }()
|
||||
|
||||
// 加载应用信息
|
||||
// 第一步: 加载应用信息
|
||||
app.Load(cfg)
|
||||
|
||||
// 第二步: 建立数据库 & 会话连接
|
||||
share.DBConnect(cfg.DB) // 创建数据库连接
|
||||
share.SessionConnect(cfg.Session) // 创建会话服务器链接
|
||||
|
||||
app.Load(cfg) // 加载应用信息
|
||||
|
||||
// 加载应用引擎
|
||||
if os.Getenv("YAO_DEV") != "" {
|
||||
LoadEngine(filepath.Join(os.Getenv("YAO_DEV"), "/xiang"))
|
||||
} else {
|
||||
LoadEngine()
|
||||
}
|
||||
|
||||
// 第三步: 加载数据分析引擎
|
||||
query.Load(cfg) // 加载数据分析引擎
|
||||
|
||||
share.Load(cfg) // 加载共享库 lib
|
||||
script.Load(cfg) // 加载JS处理器 script
|
||||
model.Load(cfg) // 加载数据模型 model
|
||||
flow.Load(cfg) // 加载业务逻辑 Flow
|
||||
plugin.Load(cfg) // 加载业务插件 plugin
|
||||
table.Load(cfg) // 加载数据表格 table
|
||||
chart.Load(cfg) // 加载分析图表 chart
|
||||
page.Load(cfg) // 加载页面 page
|
||||
// 第四步: 加载共享库 & JS 处理器
|
||||
err = share.Load(cfg) // 加载共享库 lib
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = script.Load(cfg) // 加载JS处理器 script
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 第五步: 加载数据模型等
|
||||
err = model.Load(cfg) // 加载数据模型 model
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = flow.Load(cfg) // 加载业务逻辑 Flow
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = plugin.Load(cfg) // 加载业务插件 plugin
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = table.Load(cfg) // 加载数据表格 table
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = chart.Load(cfg) // 加载分析图表 chart
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = page.Load(cfg) // 加载页面 page
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
importer.Load(cfg) // 加载数据导入 imports
|
||||
workflow.Load(cfg) // 加载工作流 workflow
|
||||
api.Load(cfg) // 加载业务接口 API
|
||||
err = api.Load(cfg) // 加载业务接口 API
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
server.Load(cfg) // 加载服务
|
||||
|
||||
// 加密密钥函数
|
||||
gou.LoadCrypt(fmt.Sprintf(`{"key":"%s"}`, cfg.DB.AESKey), "AES")
|
||||
gou.LoadCrypt(`{}`, "PASSWORD")
|
||||
return nil
|
||||
}
|
||||
|
||||
// Reload 根据配置重新加载 API, FLow, Model, Plugin
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue