initial commit before refactor switch
This commit is contained in:
18
cmd/clientinfo/consts.go
Normal file
18
cmd/clientinfo/consts.go
Normal file
@@ -0,0 +1,18 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
`log`
|
||||
|
||||
sysdUtil `github.com/coreos/go-systemd/util`
|
||||
`github.com/go-playground/validator/v10`
|
||||
)
|
||||
|
||||
var (
|
||||
isSystemd bool = sysdUtil.IsRunningSystemd()
|
||||
validate *validator.Validate = validator.New(validator.WithRequiredStructEnabled())
|
||||
)
|
||||
|
||||
const (
|
||||
logFlags int = log.LstdFlags | log.Lmsgprefix
|
||||
logFlagsDebug int = logFlags | log.Llongfile
|
||||
)
|
||||
118
cmd/clientinfo/main.go
Normal file
118
cmd/clientinfo/main.go
Normal file
@@ -0,0 +1,118 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
`errors`
|
||||
`fmt`
|
||||
`log`
|
||||
`os`
|
||||
|
||||
`github.com/creasty/defaults`
|
||||
`github.com/davecgh/go-spew/spew`
|
||||
`github.com/jessevdk/go-flags`
|
||||
`r00t2.io/clientinfo/args`
|
||||
`r00t2.io/clientinfo/server`
|
||||
`r00t2.io/clientinfo/version`
|
||||
`r00t2.io/goutils/logging`
|
||||
`r00t2.io/sysutils/envs`
|
||||
)
|
||||
|
||||
func main() {
|
||||
|
||||
var err error
|
||||
var logger *logging.MultiLogger
|
||||
var logFlagsRuntime int = logFlags
|
||||
var srv *server.Server
|
||||
var args *args.Args = new(args.Args)
|
||||
var flagsErr *flags.Error = new(flags.Error)
|
||||
var parser *flags.Parser = flags.NewParser(args, flags.Default)
|
||||
|
||||
if _, err = parser.Parse(); err != nil {
|
||||
switch {
|
||||
case errors.As(err, &flagsErr):
|
||||
switch {
|
||||
// These print their relevant messages by themselves.
|
||||
case errors.Is(
|
||||
flagsErr.Type,
|
||||
flags.ErrHelp,
|
||||
),
|
||||
errors.Is(
|
||||
flagsErr.Type,
|
||||
flags.ErrCommandRequired,
|
||||
),
|
||||
errors.Is(
|
||||
flagsErr.Type,
|
||||
flags.ErrRequired,
|
||||
):
|
||||
return
|
||||
default:
|
||||
log.Panicln(err)
|
||||
}
|
||||
default:
|
||||
log.Panicln(err)
|
||||
}
|
||||
}
|
||||
|
||||
if version.Ver, err = version.Version(); err != nil {
|
||||
log.Panicln(err)
|
||||
}
|
||||
|
||||
// If args.Version or args.DetailVersion are true, just print them and exit.
|
||||
if args.DetailVersion || args.Version {
|
||||
if args.Version {
|
||||
fmt.Println(version.Ver.Short())
|
||||
return
|
||||
} else if args.DetailVersion {
|
||||
fmt.Println(version.Ver.Detail())
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// We want to set up logging before anything else.
|
||||
if args.DoDebug {
|
||||
logFlagsRuntime = logFlagsDebug
|
||||
}
|
||||
logger = logging.GetMultiLogger(args.DoDebug, "ClientInfo")
|
||||
if err = logger.AddDefaultLogger(
|
||||
"default",
|
||||
logFlagsRuntime,
|
||||
"/var/log/clientinfo/clientinfo.log", "~/logs/clientinfo.log",
|
||||
); err != nil {
|
||||
log.Panicln(err)
|
||||
}
|
||||
if err = logger.Setup(); err != nil {
|
||||
log.Panicln(err)
|
||||
}
|
||||
logger.Info("main: ClientInfo version %v", version.Ver.Short())
|
||||
logger.Debug("main: ClientInfo version (extended):\n%v", version.Ver.Detail())
|
||||
defer logger.Shutdown()
|
||||
|
||||
// TODO: WORKAROUND: https://github.com/jessevdk/go-flags/issues/408
|
||||
if envs.HasEnv("CINFO_URI") {
|
||||
args.Listen.Listen = os.Getenv("CINFO_URI")
|
||||
}
|
||||
|
||||
if err = defaults.Set(args); err != nil {
|
||||
logger.Err("main: Failed to set CLI arg defaults: %v", err)
|
||||
log.Panicln(err)
|
||||
}
|
||||
|
||||
logger.Debug("main: Initialized with args:\n%v", spew.Sdump(args))
|
||||
|
||||
if err = validate.Struct(args); err != nil {
|
||||
logger.Err("main: Received error when validating args: %v", err)
|
||||
log.Panicln(err)
|
||||
}
|
||||
|
||||
if srv, err = server.NewServer(logger, args); err != nil {
|
||||
logger.Err("main: Received error when creating server: %v", err)
|
||||
log.Panicln(err)
|
||||
}
|
||||
logger.Debug("main: Starting server.")
|
||||
if err = srv.Run(); err != nil {
|
||||
logger.Err("main: Received error when running server: %v", err)
|
||||
log.Panicln(err)
|
||||
}
|
||||
defer srv.Close()
|
||||
|
||||
logger.Debug("main: Exiting.")
|
||||
}
|
||||
Reference in New Issue
Block a user