| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- // Package config reads the gateway credentials from the environment.
- //
- // The credentials are never logged, never printed and never written to disk by
- // this package.
- package config
- import (
- "fmt"
- "os"
- "strings"
- )
- // Environment variable names.
- const (
- EnvUser = "SCHLUNDTECH_USER"
- EnvPassword = "SCHLUNDTECH_PASSWORD"
- EnvContext = "SCHLUNDTECH_CONTEXT"
- EnvToken = "SCHLUNDTECH_TOKEN"
- EnvEndpoint = "SCHLUNDTECH_ENDPOINT"
- )
- // Credentials are the values needed to talk to the gateway.
- type Credentials struct {
- User string
- Password string
- Context string
- Token string
- Endpoint string
- }
- // FromEnv reads the credentials. It reports every missing variable at once so
- // a first run does not fail one variable at a time.
- func FromEnv() (Credentials, error) {
- c := Credentials{
- User: strings.TrimSpace(os.Getenv(EnvUser)),
- Password: os.Getenv(EnvPassword),
- Context: strings.TrimSpace(os.Getenv(EnvContext)),
- Token: strings.TrimSpace(os.Getenv(EnvToken)),
- Endpoint: strings.TrimSpace(os.Getenv(EnvEndpoint)),
- }
- var missing []string
- if c.User == "" {
- missing = append(missing, EnvUser)
- }
- if c.Password == "" {
- missing = append(missing, EnvPassword)
- }
- if c.Context == "" {
- missing = append(missing, EnvContext)
- }
- if len(missing) > 0 {
- return c, fmt.Errorf("missing environment variable(s): %s", strings.Join(missing, ", "))
- }
- return c, nil
- }
|