kconfig/cmd/kconfig/main.go

68 lines
1.4 KiB
Go

package main
import (
"flag"
"fmt"
"net/http"
"os"
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
"kumoly.io/lib/guard"
"kumoly.io/tools/kconfig"
)
var (
flagAddr string
flagAppName string
flagDev bool
flagLogLevel int
flagLogPretty bool
)
func init() {
flag.StringVar(&flagAddr, "addr", ":8000", "address to listen")
flag.StringVar(&flagAppName, "name", "kconfig", "name of the app")
flag.BoolVar(&flagDev, "dev", false, "turn on dev mode")
flag.IntVar(&flagLogLevel, "level", 1, "log level [-1:5] 7 to disable")
flag.BoolVar(&flagLogPretty, "pretty", false, "log message in human readable format (the original log is json)")
flag.Usage = func() {
fmt.Fprintf(os.Stderr, "Usage: kconfig [options]\n")
flag.PrintDefaults()
}
}
func main() {
flag.Parse()
zerolog.TimeFieldFormat = zerolog.TimeFormatUnix
zerolog.SetGlobalLevel(zerolog.Level(flagLogLevel))
if flagLogPretty {
log.Logger = log.Output(zerolog.ConsoleWriter{
Out: os.Stdout,
TimeFormat: "2006/01/02 15:04:05",
})
}
if flagDev {
log.Logger = log.With().Caller().Logger()
}
mux := http.NewServeMux()
// mux.Handle("/k/", http.StripPrefix("/k", kconfig.New()))
mux.Handle("/", kconfig.New())
g := guard.New()
server := &http.Server{
Addr: flagAddr,
Handler: g.Guard(mux),
}
log.Info().Msgf("%s started at %s", flagAppName, flagAddr)
err := server.ListenAndServe()
if err != nil {
log.Error().Err(err)
}
}