Changed the default config location from to the system-directory for config

This commit is contained in:
Raphael Tiersch 2017-07-07 22:22:22 +02:00
parent 8c6fa02d22
commit 4e773f9787

44
cobra/cmd/init.go Normal file → Executable file
View file

@ -142,17 +142,27 @@ package cmd
import (
"fmt"
"os"
{{if .viper}}
homedir "github.com/mitchellh/go-homedir"{{end}}
"github.com/Fjolnir-Dvorak/environ"{{if .viper}}
"github.com/spf13/cobra"{{if .viper}}
"github.com/spf13/viper"{{end}}
"github.com/spf13/viper"
"path/filepath"{{end}}
){{if .viper}}
var cfgFile string{{end}}
const (
VendorName = ""
ApplicationName = "{{.appName}}"
DefaultConfType = "yaml"
)
{{end}}
var ({{if .viper}}
cfgFile string{{end}}
Environ environ.Environ
)
// RootCmd represents the base command when called without any subcommands
var RootCmd = &cobra.Command{
Use: "{{.appName}}",
Use: ApplicationName,
Short: "A brief description of your application",
Long: ` + "`" + `A longer description that spans multiple lines and likely contains
examples and usage of using your application. For example:
@ -174,14 +184,20 @@ func Execute() {
}
}
func init() { {{if .viper}}
func init() {
Environ = environ.New(VendorName, ApplicationName)
{{if .viper}}
cobra.OnInitialize(initConfig)
{{end}}
// Here you will define your flags and configuration settings.
// Cobra supports persistent flags, which, if defined here,
// will be global for your application.{{ if .viper }}
RootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.{{ .appName }}.yaml)"){{ else }}
// RootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.{{ .appName }}.yaml)"){{ end }}
configFile := filepath.Join(Environ.VarConfigLocal(), ApplicationName + "." + DefaultConfType)
RootCmd.PersistentFlags().StringVar(&cfgFile, "config", "",
"config file (default is " + configFile + ")"){{ else }}
// configFile := filepath.Join(Environ.VarConfigLocal(), ApplicationName + "." + DefaultConfType)
// RootCmd.PersistentFlags().StringVar(&cfgFile, "config", "",
// "config file (default is " + configFile + ")"){{ end }}
// Cobra also supports local flags, which will only run
// when this action is called directly.
@ -194,16 +210,10 @@ func initConfig() {
// Use config file from the flag.
viper.SetConfigFile(cfgFile)
} else {
// Find home directory.
home, err := homedir.Dir()
if err != nil {
fmt.Println(err)
os.Exit(1)
}
// Search config in home directory with name ".{{ .appName }}" (without extension).
viper.AddConfigPath(home)
viper.SetConfigName(".{{ .appName }}")
// Search config in Environ.ConfigLocal() directory with name "ApplicationName" (without extension).
viper.AddConfigPath(Environ.ConfigLocal())
viper.SetConfigName(ApplicationName)
}
viper.AutomaticEnv() // read in environment variables that match