39 lines
985 B
Go
39 lines
985 B
Go
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)
|
|
}
|