pkg/config/config.go (27 lines of code) (raw):
package config
import (
"github.com/kelseyhightower/envconfig"
"github.com/pkg/errors"
)
// Config holds configuration from the env variables
type Config struct {
Cloud string `envconfig:"AZURE_ENVIRONMENT" default:"AzurePublicCloud"`
TenantID string `envconfig:"AZURE_TENANT_ID" required:"true"`
ProxyImage string `envconfig:"PROXY_IMAGE"`
ProxyInitImage string `envconfig:"PROXY_INIT_IMAGE"`
}
// ParseConfig parses the configuration from env variables
func ParseConfig() (*Config, error) {
c := new(Config)
if err := envconfig.Process("config", c); err != nil {
return c, err
}
// validate parsed config
if err := validateConfig(c); err != nil {
return nil, err
}
return c, nil
}
// validateConfig validates the configuration
func validateConfig(c *Config) error {
if c.TenantID == "" {
return errors.New("AZURE_TENANT_ID is required")
}
return nil
}