// Execute sets up common features that all mantle commands should share // and then executes the command. It does not return. func Execute(main *cobra.Command) { // If we were invoked via a multicall entrypoint run it instead. // TODO(marineam): should we figure out a way to initialize logging? exec.MaybeExec() main.AddCommand(versionCmd) // TODO(marineam): pflags defines the Value interface differently, // update capnslog accordingly... //main.PersistentFlags().Var(&level, "log-level", // "Set global log level. (default is NOTICE)") main.PersistentFlags().BoolVarP(&logVerbose, "verbose", "v", false, "Alias for --log-level=INFO") main.PersistentFlags().BoolVarP(&logDebug, "debug", "d", false, "Alias for --log-level=DEBUG") var preRun = main.PersistentPreRun main.PersistentPreRun = func(cmd *cobra.Command, args []string) { startLogging(cmd) if preRun != nil { preRun(cmd, args) } } if err := main.Execute(); err != nil { plog.Fatal(err) } os.Exit(0) }
func startLogging(cmd *cobra.Command) { switch { case logDebug: logLevel = capnslog.DEBUG case logVerbose: logLevel = capnslog.INFO } capnslog.SetFormatter(capnslog.NewStringFormatter(cmd.Out())) capnslog.SetGlobalLogLevel(logLevel) plog.Infof("Started logging at level %s", logLevel) }