@@ -23,23 +23,27 @@ type Config struct {
2323 KeepAliveTimeout int
2424}
2525
26- // Load config from the provided string.
27- // Returns an error if the string is not a valid YAML.
28- func loadConfigFromString (configString string ) (* Config , error ) {
29- logrus .Info ("loading config from string" )
26+ // Tries to load a config from the `CONFIG` environment variable.
27+ // If the environment variable is not set, tries to load a config from the
28+ // provided path to the config file (YAML). Returns an error if the config could
29+ // not be loaded.
30+ func loadConfig (path string ) (* Config , error ) {
31+ config , err := loadConfigFromEnv ()
32+ if err != nil {
33+ if ! errors .Is (err , ErrNoConfigEnvVar ) {
34+ return nil , err
35+ }
3036
31- var config Config
32- if err := yaml .Unmarshal ([]byte (configString ), & config ); err != nil {
33- return nil , fmt .Errorf ("failed to unmarshal YAML file: %w" , err )
37+ return loadConfigFromPath (path )
3438 }
3539
36- return & config , nil
40+ return config , nil
3741}
3842
3943// ErrNoConfigEnvVar is returned when the CONFIG environment variable is not set.
4044var ErrNoConfigEnvVar = errors .New ("environment variable not set or invalid" )
4145
42- // Tries to load the config from environment variables .
46+ // Tries to load the config from environment variable (`CONFIG`) .
4347// Returns an error if not all environment variables are set.
4448func loadConfigFromEnv () (* Config , error ) {
4549 configEnv := os .Getenv ("CONFIG" )
@@ -61,3 +65,16 @@ func loadConfigFromPath(path string) (*Config, error) {
6165
6266 return loadConfigFromString (string (file ))
6367}
68+
69+ // Load config from the provided string.
70+ // Returns an error if the string is not a valid YAML.
71+ func loadConfigFromString (configString string ) (* Config , error ) {
72+ logrus .Info ("loading config from string" )
73+
74+ var config Config
75+ if err := yaml .Unmarshal ([]byte (configString ), & config ); err != nil {
76+ return nil , fmt .Errorf ("failed to unmarshal YAML file: %w" , err )
77+ }
78+
79+ return & config , nil
80+ }
0 commit comments