Viper ist eine Library welche diverse Formate an Configfiles parsen kann und ENV Variablen lesen kann.
Installation von viper
go get github.com/spf13/viper
Beispiel Configfile (test.config) im ENV Format
USER=user_name PASSWORD=pass_word REALM=test_realm
Beispiel Script
package main import ( "fmt" "log" "github.com/spf13/viper" ) type cnf struct { User string Password string Realm string } var C cnf func main() { // Read config file from config file viper.AddConfigPath(".") viper.SetConfigName("test.config") viper.SetConfigType("env") viper.ReadInConfig() viper.AutomaticEnv() err := viper.Unmarshal(&C) if err != nil { log.Fatalf("unable to decode config, %v", err) } fmt.Printf("Username: %v\n", C.User) fmt.Printf("Passwort: %v\n", C.Password) fmt.Printf("Realm: %v\n", C.Realm) }
AutomaticEnv ließt zur Laufzeit Umgebungsvariablen ein, es folgt nach dem Lesen des Configfiles somit werden die Werte aus dem Configfile überschrieben.
Beispiel CLI
./testapp Username: user_name Passwort: pass_word Realm: test_realm USER=lalala PASSWORD=pass1234 REALM=real1234 ./testapp Username: lalala Passwort: pass1234 Realm: real1234