package cmd import ( "log" "github.com/spf13/cobra" "github.com/spf13/viper" ) // LogLevel Flag var LogLevel = "info" var LogFormat = "json" var cfgFile string var rootCmd = &cobra.Command{ Use: "apjournal", Short: "apjournal", } func init() { cobra.OnInitialize(initConfig) rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is ./config.yml)") viper.SetConfigName("config") viper.AddConfigPath(".") // First try to load the config from the current directory viper.AddConfigPath("$HOME") // Then try to load it from the HOME directory viper.AddConfigPath("/etc/apjournal/") // As a last resort try to load it from the /etc/ } func initConfig() { if cfgFile != "" { // Use config file from the flag. viper.SetConfigFile(cfgFile) } viper.SetEnvPrefix("CFG") viper.AutomaticEnv() if err := viper.ReadInConfig(); err != nil { log.Fatal("Can't read configuration file", "error", err) } } // Execute the commands func Execute() { if err := rootCmd.Execute(); err != nil { log.Fatal("failed to execute", "error", err) } }