github.com/voedger/voedger@v0.0.0-20240520144910-273e84102129/pkg/goutils/cobrau/rootcmd.go (about) 1 /* 2 * Copyright (c) 2023-present unTill Pro, Ltd. 3 * @author Maxim Geraskin 4 */ 5 6 package cobrau 7 8 import ( 9 "fmt" 10 11 "github.com/spf13/cobra" 12 "github.com/voedger/voedger/pkg/goutils/logger" 13 ) 14 15 /* 16 17 Persistent flags: 18 19 -v, --verbose Print verbose output (detailed level) 20 --trace Print trace output (most detailed level) 21 22 */ 23 24 func PrepareRootCmd(use string, short string, args []string, version string, cmds ...*cobra.Command) *cobra.Command { 25 26 var rootCmd = &cobra.Command{ 27 Use: use, 28 Short: short, 29 PersistentPreRun: func(cmd *cobra.Command, args []string) { 30 if ok, _ := cmd.Flags().GetBool("trace"); ok { 31 logger.SetLogLevel(logger.LogLevelTrace) 32 logger.Verbose("Using logger.LogLevelTrace...") 33 } else if ok, _ := cmd.Flags().GetBool("verbose"); ok { 34 logger.SetLogLevel(logger.LogLevelVerbose) 35 logger.Verbose("Using logger.LogLevelVerbose...") 36 } 37 }, 38 } 39 40 var versionCmd = &cobra.Command{ 41 Use: "version", 42 Short: "Print current version", 43 Aliases: []string{"ver"}, 44 Run: func(cmd *cobra.Command, args []string) { 45 fmt.Println(version) 46 }, 47 } 48 49 rootCmd.SetArgs(args[1:]) 50 rootCmd.AddCommand(versionCmd) 51 rootCmd.AddCommand(cmds...) 52 rootCmd.PersistentFlags().BoolP("verbose", "v", false, "Verbose output") 53 rootCmd.PersistentFlags().Bool("trace", false, "Extremely verbose output") 54 rootCmd.SilenceUsage = true 55 return rootCmd 56 }