cairn/internal/config/config.go

38 lines
1.2 KiB
Go

package config
import (
"fmt"
"github.com/kelseyhightower/envconfig"
)
type Config struct {
ListenAddr string `envconfig:"CAIRN_LISTEN_ADDR" default:":8080"`
DatabaseURL string `envconfig:"CAIRN_DATABASE_URL" default:"postgres://cairn:cairn@localhost:5432/cairn?sslmode=disable"`
S3Endpoint string `envconfig:"CAIRN_S3_ENDPOINT" default:"localhost:9000"`
S3Bucket string `envconfig:"CAIRN_S3_BUCKET" default:"cairn-artifacts"`
S3AccessKey string `envconfig:"CAIRN_S3_ACCESS_KEY" default:"minioadmin"`
S3SecretKey string `envconfig:"CAIRN_S3_SECRET_KEY" default:"minioadmin"`
S3UseSSL bool `envconfig:"CAIRN_S3_USE_SSL" default:"false"`
ExternalURL string `envconfig:"CAIRN_EXTERNAL_URL"`
ForgejoURL string `envconfig:"CAIRN_FORGEJO_URL"`
ForgejoToken string `envconfig:"CAIRN_FORGEJO_TOKEN"`
ForgejoWebhookSecret string `envconfig:"CAIRN_FORGEJO_WEBHOOK_SECRET"`
}
func Load() (*Config, error) {
var c Config
if err := envconfig.Process("", &c); err != nil {
return nil, fmt.Errorf("loading environment config: %w", err)
}
if c.DatabaseURL == "" {
return nil, fmt.Errorf("CAIRN_DATABASE_URL is required")
}
return &c, nil
}