main.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. "github.com/spf13/cobra"
  6. "github.com/runningwater/gohub/app/cmd"
  7. "github.com/runningwater/gohub/app/cmd/make"
  8. "github.com/runningwater/gohub/bootstrap"
  9. appConfig "github.com/runningwater/gohub/config"
  10. "github.com/runningwater/gohub/pkg/config"
  11. "github.com/runningwater/gohub/pkg/console"
  12. )
  13. func init() {
  14. // 加载 config 目录下的配置信息
  15. appConfig.Initialize()
  16. }
  17. func main() {
  18. // 应用主入口,默认调用 cmd.CmdServe 命令
  19. // 该命令会启动 HTTP 服务
  20. var rootCmd = &cobra.Command{
  21. Use: "gohub",
  22. Short: "gohub is a simple forum project",
  23. Long: `Default will run "serve" command, you can use "-h" flag to see all subcommands`,
  24. // 所有子命令都会调用以下代码来初始化配置信息
  25. PersistentPreRun: func(command *cobra.Command, args []string) {
  26. // 配置初始化,依赖命令行 --env 参数
  27. config.InitConfig(cmd.Env)
  28. // 初始化 Logger
  29. bootstrap.SetupLogger()
  30. // 初始化 DB
  31. // 注意: 初始化 DB 前应该先初始化 logger
  32. bootstrap.SetupDB()
  33. // 初始化 Redis
  34. bootstrap.SetupRedis()
  35. },
  36. }
  37. // 注册子命令
  38. rootCmd.AddCommand(
  39. cmd.CmdServe,
  40. cmd.CmdKey,
  41. cmd.CmdPlay,
  42. cmd.CmdMigrate,
  43. cmd.CmdDBSeed,
  44. // cmd.CmdTestCommand,
  45. make.CmdMake,
  46. )
  47. // 配置默认运行 Web 服务
  48. cmd.RegisterDefaultCmd(rootCmd, cmd.CmdServe)
  49. // 注册全局参数 --env
  50. cmd.RegisterGlobalFlags(rootCmd)
  51. // 执行主命令
  52. if err := rootCmd.Execute(); err != nil {
  53. console.Exit(fmt.Sprintf("Failed to run app with %v: %s", os.Args, err.Error()))
  54. }
  55. }