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}
21
22func LoadConfig(ctx context.Context) (*Config, error) {
23 var cfg Config
24 err := envconfig.Process(ctx, &cfg)
25 if err != nil {
26 return nil, err
27 }
28
29 return &cfg, nil
30}