// // main.go // Copyright (C) 2024 veypi // 2025-03-04 16:08:06 // Distributed under terms of the MIT license. // package main import ( "github.com/veypi/OneAuth" "github.com/veypi/OneAuth/cfg" "github.com/veypi/OneAuth/models" "github.com/veypi/OneBD/rest" "github.com/veypi/utils/flags" "github.com/veypi/utils/logv" ) var cmdMain = flags.New("app", "the backend server of app") var cmdCfg = cmdMain.SubCommand("cfg", "generate cfg file") var cmdDB = cmdMain.SubCommand("db", "database operations") var configFile = cmdMain.String("f", "./dev.yaml", "the config file") var cliOpts = &struct { Host string `json:"host"` Port int `json:"port"` LoggerPath string `json:"logger_path,omitempty"` LoggerLevel string `json:"logger_level,omitempty"` Core *cfg.Options }{ Core: cfg.Config, } func init() { cmdMain.StringVar(&cliOpts.Host, "host", "0.0.0.0", "host") cmdMain.IntVar(&cliOpts.Port, "p", 4000, "port") cmdMain.StringVar(&cliOpts.LoggerLevel, "l", "info", "log level") cmdMain.Before = func() error { flags.LoadCfg(*configFile, cfg.Config) cmdMain.Parse() logv.SetLevel(logv.AssertFuncErr(logv.ParseLevel(cliOpts.LoggerLevel))) return nil } cmdMain.Command = runWeb cmdCfg.Command = func() error { return flags.DumpCfg(*configFile, cfg.Config) } cmdDB.SubCommand("migrate", "migrate database").Command = models.Migrate cmdDB.SubCommand("drop", "drop database").Command = models.Drop cmdDB.SubCommand("init", "init db data").Command = models.InitDB } func main() { cmdMain.Parse() err := cmdMain.Run() if err != nil { logv.Warn().Msg(err.Error()) } } func runWeb() error { server, err := rest.New(rest.WithHost(cliOpts.Host), rest.WithPort(cliOpts.Port)) if err != nil { return err } server.SetRouter(OneAuth.Router) server.EnableAI() server.Router().Print() return server.Run() }