65 lines
1.5 KiB
Go
65 lines
1.5 KiB
Go
package main
|
|
|
|
import (
|
|
"errors"
|
|
"log"
|
|
|
|
"github.com/davecgh/go-spew/spew"
|
|
"github.com/jessevdk/go-flags"
|
|
`r00t2.io/vault_totp/internal`
|
|
)
|
|
|
|
func main() {
|
|
var err error
|
|
var parser *flags.Parser = flags.NewParser(args, flags.Default)
|
|
|
|
parser.NamespaceDelimiter = "-"
|
|
parser.EnvNamespaceDelimiter = "_"
|
|
|
|
if _, err = parser.Parse(); err != nil {
|
|
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)
|
|
}
|
|
}
|
|
|
|
defer internal.Logger.Shutdown()
|
|
|
|
logger.Debug("Initialized with args:\n%v", spew.Sdump(args))
|
|
|
|
logger.Debug("main: Configuring.")
|
|
if err = configure(); err != nil {
|
|
logger.Err("main: Received error while configuring: %v", err)
|
|
log.Panicln(err)
|
|
}
|
|
|
|
logger.Debug("main: Fetching entity.")
|
|
if err = getEnt(); err != nil {
|
|
logger.Err("main: Received error while fetching entity: %v", err)
|
|
log.Panicln(err)
|
|
}
|
|
if args.Gen.LookupOnly {
|
|
if err = printEntity(); err != nil {
|
|
logger.Err("main: Received error while rendering entity out: %v", err)
|
|
log.Panicln(err)
|
|
}
|
|
logger.Debug("main: Done.")
|
|
return
|
|
}
|
|
|
|
logger.Debug("main: Generating TOTP seed/secret.")
|
|
if err = genTotp(); err != nil {
|
|
logger.Err("main: Received error while generating TOTP secret: %v", err)
|
|
log.Panicln(err)
|
|
}
|
|
|
|
logger.Debug("main: Done.")
|
|
}
|