1package appview
2
3import (
4 "context"
5
6 "github.com/sethvargo/go-envconfig"
7)
8
9type Config struct {
10 CookieSecret string `env:"TANGLED_COOKIE_SECRET, default=00000000000000000000000000000000"`
11 DbPath string `env:"TANGLED_DB_PATH, default=appview.db"`
12 ListenAddr string `env:"TANGLED_LISTEN_ADDR, default=0.0.0.0:3000"`
13 Dev bool `env:"TANGLED_DEV, default=false"`
14 JetstreamEndpoint string `env:"TANGLED_JETSTREAM_ENDPOINT, default=wss://jetstream1.us-east.bsky.network/subscribe"`
15 ResendApiKey string `env:"TANGLED_RESEND_API_KEY"`
16 CamoHost string `env:"TANGLED_CAMO_HOST, default=https://camo.tangled.sh"`
17 CamoSharedSecret string `env:"TANGLED_CAMO_SHARED_SECRET"`
18 AvatarSharedSecret string `env:"TANGLED_AVATAR_SHARED_SECRET"`
19 AvatarHost string `env:"TANGLED_AVATAR_HOST, default=https://avatar.tangled.sh"`
20 EnableTelemetry bool `env:"TANGLED_TELEMETRY_ENABLED, default=false"`
21}
22
23func LoadConfig(ctx context.Context) (*Config, error) {
24 var cfg Config
25 err := envconfig.Process(ctx, &cfg)
26 if err != nil {
27 return nil, err
28 }
29
30 return &cfg, nil
31}