mirror of
https://github.com/yusing/godoxy.git
synced 2025-05-19 20:32:35 +02:00
refactor: improved init flow in main
This commit is contained in:
parent
fd223c7542
commit
1e39d0b186
3 changed files with 58 additions and 49 deletions
27
cmd/main.go
27
cmd/main.go
|
@ -28,18 +28,21 @@ import (
|
|||
|
||||
var rawLogger = log.New(os.Stdout, "", 0)
|
||||
|
||||
func init() {
|
||||
var out io.Writer = os.Stderr
|
||||
if common.EnableLogStreaming {
|
||||
out = zerolog.MultiLevelWriter(out, v1.GetMemLogger())
|
||||
func parallel(fns ...func()) {
|
||||
var wg sync.WaitGroup
|
||||
for _, fn := range fns {
|
||||
wg.Add(1)
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
fn()
|
||||
}()
|
||||
}
|
||||
logging.InitLogger(out)
|
||||
// logging.AddHook(v1.GetMemLogger())
|
||||
wg.Wait()
|
||||
}
|
||||
|
||||
func main() {
|
||||
initProfiling()
|
||||
args := common.GetArgs()
|
||||
args := pkg.GetArgs(common.MainServerCommandValidator{})
|
||||
|
||||
switch args.Command {
|
||||
case common.CommandReload:
|
||||
|
@ -76,7 +79,11 @@ func main() {
|
|||
if args.Command == common.CommandStart {
|
||||
logging.Info().Msgf("GoDoxy version %s", pkg.GetVersion())
|
||||
logging.Trace().Msg("trace enabled")
|
||||
// logging.AddHook(notif.GetDispatcher())
|
||||
parallel(
|
||||
internal.InitIconListCache,
|
||||
homepage.InitOverridesConfig,
|
||||
favicon.InitIconCache,
|
||||
)
|
||||
} else {
|
||||
logging.DiscardLogger()
|
||||
}
|
||||
|
@ -121,10 +128,6 @@ func main() {
|
|||
return
|
||||
}
|
||||
|
||||
go internal.InitIconListCache()
|
||||
go homepage.InitOverridesConfig()
|
||||
go favicon.InitIconCache()
|
||||
|
||||
cfg.Start(&config.StartServersOptions{
|
||||
Proxy: true,
|
||||
})
|
||||
|
|
|
@ -1,15 +1,5 @@
|
|||
package common
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"log"
|
||||
)
|
||||
|
||||
type Args struct {
|
||||
Command string
|
||||
}
|
||||
|
||||
const (
|
||||
CommandStart = ""
|
||||
CommandValidate = "validate"
|
||||
|
@ -22,8 +12,11 @@ const (
|
|||
CommandDebugListMTrace = "debug-ls-mtrace"
|
||||
)
|
||||
|
||||
var ValidCommands = []string{
|
||||
CommandStart,
|
||||
type MainServerCommandValidator struct{}
|
||||
|
||||
func (v MainServerCommandValidator) IsCommandValid(cmd string) bool {
|
||||
switch cmd {
|
||||
case CommandStart,
|
||||
CommandValidate,
|
||||
CommandListConfigs,
|
||||
CommandListRoutes,
|
||||
|
@ -31,24 +24,8 @@ var ValidCommands = []string{
|
|||
CommandReload,
|
||||
CommandDebugListEntries,
|
||||
CommandDebugListProviders,
|
||||
CommandDebugListMTrace,
|
||||
}
|
||||
|
||||
func validateArg(arg string) error {
|
||||
for _, v := range ValidCommands {
|
||||
if arg == v {
|
||||
return nil
|
||||
CommandDebugListMTrace:
|
||||
return true
|
||||
}
|
||||
}
|
||||
return fmt.Errorf("invalid command %q", arg)
|
||||
}
|
||||
|
||||
func GetArgs() Args {
|
||||
var args Args
|
||||
flag.Parse()
|
||||
args.Command = flag.Arg(0)
|
||||
if err := validateArg(args.Command); err != nil {
|
||||
log.Fatalf("invalid command: %s", err)
|
||||
}
|
||||
return args
|
||||
return false
|
||||
}
|
||||
|
|
29
pkg/args.go
Normal file
29
pkg/args.go
Normal file
|
@ -0,0 +1,29 @@
|
|||
package pkg
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"log"
|
||||
)
|
||||
|
||||
type (
|
||||
Args struct {
|
||||
Command string
|
||||
Args []string
|
||||
}
|
||||
CommandValidator interface {
|
||||
IsCommandValid(cmd string) bool
|
||||
}
|
||||
)
|
||||
|
||||
func GetArgs(validator CommandValidator) Args {
|
||||
var args Args
|
||||
flag.Parse()
|
||||
args.Command = flag.Arg(0)
|
||||
if !validator.IsCommandValid(args.Command) {
|
||||
log.Fatalf("invalid command: %s", args.Command)
|
||||
}
|
||||
if len(flag.Args()) > 1 {
|
||||
args.Args = flag.Args()[1:]
|
||||
}
|
||||
return args
|
||||
}
|
Loading…
Add table
Reference in a new issue