package main import ( "github.com/spf13/viper" ) type Script struct { Filepath string `mapstructure:"filepath"` Args []string `mapstructure:"args"` Frequency int64 `mapstructure:"frequency"` } type Config struct { OutputFilepath string `mapstructure:"output_filepath"` Scripts []Script `mapstructure:"scripts"` } func LoadConfig() (error, *Config) { config := new(Config) viper.SetConfigName("config") viper.SetConfigType("yaml") viper.AddConfigPath("$HOME/.config/statman/") viper.AddConfigPath(".") err := viper.ReadInConfig() if err != nil { return err, nil } err = viper.Unmarshal(config) if err != nil { return err, nil } return nil, config }