envloader.go 782 B

1234567891011121314151617181920212223242526272829303132333435
  1. package envloader
  2. import (
  3. "fmt"
  4. "github.com/joeshaw/envdecode"
  5. "github.com/porter-dev/porter/api/server/shared/config/env"
  6. )
  7. type EnvDecoderConf struct {
  8. ServerConf env.ServerConf
  9. RedisConf env.RedisConf
  10. DBConf env.DBConf
  11. }
  12. type EnvConf struct {
  13. ServerConf *env.ServerConf
  14. RedisConf *env.RedisConf
  15. DBConf *env.DBConf
  16. }
  17. // FromEnv generates a configuration from environment variables
  18. func FromEnv() (*EnvConf, error) {
  19. var envDecoderConf EnvDecoderConf = EnvDecoderConf{}
  20. if err := envdecode.StrictDecode(&envDecoderConf); err != nil {
  21. return nil, fmt.Errorf("Failed to decode server conf: %s", err)
  22. }
  23. return &EnvConf{
  24. ServerConf: &envDecoderConf.ServerConf,
  25. RedisConf: &envDecoderConf.RedisConf,
  26. DBConf: &envDecoderConf.DBConf,
  27. }, nil
  28. }