mirror of
https://github.com/go-eagle/eagle.git
synced 2025-09-26 20:41:26 +08:00
107 lines
2.2 KiB
Go
107 lines
2.2 KiB
Go
/**
|
|
*
|
|
* ____ __
|
|
* / __/__ ____ _/ /__
|
|
* / _// _ `/ _ `/ / -_)
|
|
* /___/\_,_/\_, /_/\__/
|
|
* /___/
|
|
*
|
|
*
|
|
* generate by http://patorjk.com/software/taag/#p=display&f=Small%20Slant&t=Eagle
|
|
*/
|
|
package main
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"log"
|
|
"net/http"
|
|
"os"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/spf13/pflag"
|
|
_ "go.uber.org/automaxprocs"
|
|
|
|
"github.com/go-eagle/eagle/internal/model"
|
|
"github.com/go-eagle/eagle/internal/repository"
|
|
"github.com/go-eagle/eagle/internal/server"
|
|
"github.com/go-eagle/eagle/internal/service"
|
|
eagle "github.com/go-eagle/eagle/pkg/app"
|
|
"github.com/go-eagle/eagle/pkg/config"
|
|
logger "github.com/go-eagle/eagle/pkg/log"
|
|
v "github.com/go-eagle/eagle/pkg/version"
|
|
)
|
|
|
|
var (
|
|
cfgDir = pflag.StringP("config dir", "c", "config", "config path.")
|
|
env = pflag.StringP("env name", "e", "", "env var name.")
|
|
version = pflag.BoolP("version", "v", false, "show version info.")
|
|
)
|
|
|
|
// @title eagle docs api
|
|
// @version 1.0
|
|
// @description eagle demo
|
|
|
|
// @host localhost:8080
|
|
// @BasePath /v1
|
|
func main() {
|
|
pflag.Parse()
|
|
if *version {
|
|
ver := v.Get()
|
|
marshaled, err := json.MarshalIndent(&ver, "", " ")
|
|
if err != nil {
|
|
fmt.Printf("%v\n", err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
fmt.Println(string(marshaled))
|
|
return
|
|
}
|
|
|
|
// init config
|
|
c := config.New(*cfgDir, config.WithEnv(*env))
|
|
var cfg eagle.Config
|
|
if err := c.Load("app", &cfg); err != nil {
|
|
panic(err)
|
|
}
|
|
// set global
|
|
eagle.Conf = &cfg
|
|
|
|
// -------------- init resource -------------
|
|
logger.Init()
|
|
// init db
|
|
model.Init()
|
|
// init redis
|
|
// nolint: errcheck
|
|
// redis.Init()
|
|
|
|
// init service
|
|
db, _ := model.GetDB()
|
|
service.Svc = service.New(repository.New(db))
|
|
|
|
gin.SetMode(cfg.Mode)
|
|
|
|
// init pprof server
|
|
go func() {
|
|
fmt.Printf("Listening and serving PProf HTTP on %s\n", cfg.PprofPort)
|
|
if err := http.ListenAndServe(cfg.PprofPort, http.DefaultServeMux); err != nil && err != http.ErrServerClosed {
|
|
log.Fatalf("listen ListenAndServe for PProf, err: %s", err.Error())
|
|
}
|
|
}()
|
|
|
|
// start app
|
|
app := eagle.New(
|
|
eagle.WithName(cfg.Name),
|
|
eagle.WithVersion(cfg.Version),
|
|
eagle.WithLogger(logger.GetLogger()),
|
|
eagle.WithServer(
|
|
// init http server
|
|
server.NewHTTPServer(&cfg.HTTP),
|
|
),
|
|
)
|
|
|
|
if err := app.Run(); err != nil {
|
|
panic(err)
|
|
}
|
|
}
|