|
|
@@ -1,14 +1,16 @@
|
|
|
package main
|
|
|
|
|
|
import (
|
|
|
- "flag"
|
|
|
"fmt"
|
|
|
+ "os"
|
|
|
|
|
|
- "github.com/gin-gonic/gin"
|
|
|
+ "github.com/spf13/cobra"
|
|
|
|
|
|
+ "github.com/runningwater/gohub/app/cmd"
|
|
|
"github.com/runningwater/gohub/bootstrap"
|
|
|
appConfig "github.com/runningwater/gohub/config"
|
|
|
"github.com/runningwater/gohub/pkg/config"
|
|
|
+ "github.com/runningwater/gohub/pkg/console"
|
|
|
)
|
|
|
|
|
|
func init() {
|
|
|
@@ -17,45 +19,45 @@ func init() {
|
|
|
}
|
|
|
|
|
|
func main() {
|
|
|
- // 配置初始化,依赖命令行 --env 参数
|
|
|
- var env string
|
|
|
- flag.StringVar(&env, "env", "", "加载.env 文件,如 --env=local, 加载的是 .env.local 文件")
|
|
|
- flag.Parse()
|
|
|
- config.InitConfig(env)
|
|
|
-
|
|
|
- // 初始化 Logger
|
|
|
- bootstrap.SetupLogger()
|
|
|
-
|
|
|
- // 初始化 DB
|
|
|
- // 注意: 初始化 DB 前应该先初始化 logger
|
|
|
- bootstrap.SetupDB()
|
|
|
-
|
|
|
- // 初始化 Redis
|
|
|
- bootstrap.SetupRedis()
|
|
|
-
|
|
|
- // gin 框架设置为发布模式,线上环境需要设置
|
|
|
- gin.SetMode(gin.ReleaseMode)
|
|
|
-
|
|
|
- // Gin 框架初始化
|
|
|
- r := gin.New()
|
|
|
-
|
|
|
- // 初始化路由绑定
|
|
|
- bootstrap.SetupRoute(r)
|
|
|
-
|
|
|
- // r.GET("/test_auth", middlewares.AuthJWT(), func(c *gin.Context) {
|
|
|
- // userModle := auth.CurrentUser(c)
|
|
|
- // response.Data(c, userModle)
|
|
|
- // })
|
|
|
- // r.GET("/test_gust", middlewares.GuestJWT(), func(c *gin.Context) {
|
|
|
- // response.Data(c, "hello")
|
|
|
- // })
|
|
|
-
|
|
|
- // 测试发送短信
|
|
|
- // verifycode.NewVerifyCode().SendSMS("15968875425")
|
|
|
-
|
|
|
- // 启动 HTTP 服务,监听在我们指定的端口上
|
|
|
- err := r.Run(":" + config.Get("app.port"))
|
|
|
- if err != nil {
|
|
|
- fmt.Println("启动失败", err.Error())
|
|
|
+
|
|
|
+ // 应用主入口,默认调用 cmd.CmdServe 命令
|
|
|
+ // 该命令会启动 HTTP 服务
|
|
|
+ var rootCmd = &cobra.Command{
|
|
|
+ Use: "gohub",
|
|
|
+ Short: "gohub is a simple forum project",
|
|
|
+ Long: `Default will run "serve" command, you can use "-h" flag to see all subcommands`,
|
|
|
+
|
|
|
+ // 所有子命令都会调用以下代码来初始化配置信息
|
|
|
+ PersistentPreRun: func(command *cobra.Command, args []string) {
|
|
|
+ // 配置初始化,依赖命令行 --env 参数
|
|
|
+ config.InitConfig(cmd.Env)
|
|
|
+ // 初始化 Logger
|
|
|
+ bootstrap.SetupLogger()
|
|
|
+
|
|
|
+ // 初始化 DB
|
|
|
+ // 注意: 初始化 DB 前应该先初始化 logger
|
|
|
+ bootstrap.SetupDB()
|
|
|
+
|
|
|
+ // 初始化 Redis
|
|
|
+ bootstrap.SetupRedis()
|
|
|
+ },
|
|
|
+ }
|
|
|
+
|
|
|
+ // 注册子命令
|
|
|
+ rootCmd.AddCommand(
|
|
|
+ cmd.CmdServe,
|
|
|
+ // cmd.CmdKey,
|
|
|
+ // cmd.CmdPlay,
|
|
|
+ )
|
|
|
+
|
|
|
+ // 配置默认运行 Web 服务
|
|
|
+ cmd.RegisterDefaultCmd(rootCmd, cmd.CmdServe)
|
|
|
+
|
|
|
+ // 注册全局参数 --env
|
|
|
+ cmd.RegisterGlobalFlags(rootCmd)
|
|
|
+
|
|
|
+ // 执行主命令
|
|
|
+ if err := rootCmd.Execute(); err != nil {
|
|
|
+ console.Exit(fmt.Sprintf("Failed to run app with %v: %s", os.Args, err.Error()))
|
|
|
}
|
|
|
}
|