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"` 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 }