package config import ( "github.com/Netflix/go-env" "path/filepath" ) type Config struct { DatabaseURL string `env:"DATABASE_URL"` NetlifyAuthToken string `env:"NETLIFY_AUTH_TOKEN"` DataDir string `env:"DATA_DIR"` EncryptedCookieKey string `env:"ENCRYPTED_COOKIE_KEY"` BaseURL string `env:"BASE_URL,default=http://localhost:3000/"` DataStagingDir string `env:"DATA_STAGING_DIR,default=staging"` DataScratchDir string `env:"DATA_SCRATCH_DIR,default=scratch"` DataPreviewDir string `env:"DATA_PREVIEW_DIR,default=preview"` } func Load() (cfg Config, err error) { _, err = env.UnmarshalFromEnviron(&cfg) if err != nil { return Config{}, err } return cfg, nil } func (c Config) StagingDir() string { return filepath.Join(c.DataDir, c.DataStagingDir) } func (c Config) PreviewDir() string { return filepath.Join(c.DataDir, c.DataPreviewDir) } func (c Config) ScratchDir() string { return filepath.Join(c.DataDir, c.DataScratchDir) }