37 lines
1.1 KiB
Go
37 lines
1.1 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"`
|
|
|
|
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
|
|
}
|