Skip to content
Snippets Groups Projects
cmd.go 809 B
package cmd

import (
	"fmt"
	"os"
	"time"

	"github.com/orus-io/go-flags"
	"github.com/rs/zerolog"

	beaver "orus.io/cloudcrane/beaver/lib"
)

var (
	Version = beaver.GetVersion()
)

var (
	output = zerolog.ConsoleWriter{Out: os.Stdout, TimeFormat: time.RFC3339}
	Logger = zerolog.New(output).With().Timestamp().Logger()

	parser = flags.NewNamedParser("beaver", flags.HelpFlag|flags.PassDoubleDash)
)

func Run() int {

	if _, err := parser.Parse(); err != nil {
		code := 1
		if fe, ok := err.(*flags.Error); ok {
			if fe.Type == flags.ErrHelp {
				code = 0
				// this error actually contains a help message for the user
				// so we print it on the console
				fmt.Println(err)
			} else {
				Logger.Error().Msg(err.Error())
			}
		} else {
			Logger.Err(err).Msg("")
		}
		return code
	}
	return 0
}