73 lines
1.6 KiB
Go
73 lines
1.6 KiB
Go
package main
|
|
|
|
import (
|
|
`errors`
|
|
`fmt`
|
|
`log`
|
|
`os`
|
|
|
|
`update_vault_totp/version`
|
|
|
|
`github.com/davecgh/go-spew/spew`
|
|
`github.com/jessevdk/go-flags`
|
|
`r00t2.io/goutils/logging`
|
|
)
|
|
|
|
func main() {
|
|
|
|
var err error
|
|
|
|
log.SetOutput(os.Stderr)
|
|
|
|
parser.EnvNamespaceDelimiter = ""
|
|
if _, err = parser.Parse(); err != nil {
|
|
var flagsErr *flags.Error
|
|
switch {
|
|
case errors.As(err, &flagsErr):
|
|
switch {
|
|
case errors.Is(flagsErr.Type, flags.ErrHelp), errors.Is(flagsErr.Type, flags.ErrCommandRequired), errors.Is(flagsErr.Type, flags.ErrRequired): // These print their relevant messages by themselves.
|
|
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, "ZorkBot")
|
|
if err = logger.AddDefaultLogger(
|
|
"default",
|
|
logFlagsRuntime,
|
|
"/var/log/zorkbot/zorkbot.log", "~/logs/zorkbot.log",
|
|
); err != nil {
|
|
log.Panicln(err)
|
|
}
|
|
if err = logger.Setup(); err != nil {
|
|
log.Panicln(err)
|
|
}
|
|
defer logger.Shutdown()
|
|
logger.Info("main: ZorkBot version %v", version.Ver.Short())
|
|
logger.Debug("main: ZorkBot version (extended):\n%v", version.Ver.Detail())
|
|
logger.Debug("main: Invocation args:\n%s", spew.Sdump(args))
|
|
}
|