package main import ( "fmt" "github.com/spf13/viper" "yves-biener.de/wish-serve/internal/serve" ) func createDefaultConfig() { viper.SetDefault("host", "127.0.0.1") viper.SetDefault("port", "8022") viper.SetDefault("users", map[string]string{}) viper.SetDefault("app.name", "echo") viper.SetDefault("app.args", []string{"Hello World"}) } // Load the configuration file from (`$HOME/.config/serve/config.yml` or // `./config.yml`) if it exists. Otherwise use the default values from // `createDefaultConfig()`. func loadConfig() { viper.SetConfigName("config") viper.SetConfigType("yml") viper.AddConfigPath("$HOME/.config/serve") viper.AddConfigPath(".") if err := viper.ReadInConfig(); err != nil { if _, ok := err.(viper.ConfigFileNotFoundError); !ok { panic(fmt.Errorf("fatal error config file: %w", err)) } } } func main() { createDefaultConfig() loadConfig() serve.Serve( viper.GetString("host"), viper.GetString("port"), viper.GetStringMapString("users"), viper.GetString("app.name"), viper.GetStringSlice("app.args"), ) }