A vibe coded tangled fork which supports pijul.
1package config
2
3import (
4 "context"
5 "time"
6
7 "github.com/sethvargo/go-envconfig"
8)
9
10type Config struct {
11 TapUrl string `env:"MIRROR_TAP_URL, default=http://localhost:2480"`
12 DbUrl string `env:"MIRROR_DB_URL, required"`
13 KnotUseSSL bool `env:"MIRROR_KNOT_USE_SSL, default=false"` // use SSL for Knot when not scheme is not specified
14 KnotSSRF bool `env:"MIRROR_KNOT_SSRF, default=false"`
15 GitRepoBasePath string `env:"MIRROR_GIT_BASEPATH, default=repos"`
16 GitRepoFetchTimeout time.Duration `env:"MIRROR_GIT_FETCH_TIMEOUT, default=600s"`
17 ResyncParallelism int `env:"MIRROR_RESYNC_PARALLELISM, default=5"`
18 Slurper SlurperConfig `env:",prefix=MIRROR_SLURPER_"`
19 MetricsListen string `env:"MIRROR_METRICS_LISTEN, default=127.0.0.1:7100"`
20 AdminListen string `env:"MIRROR_ADMIN_LISTEN, default=127.0.0.1:7200"`
21}
22
23type SlurperConfig struct {
24 PersistCursorPeriod time.Duration `env:"PERSIST_CURSOR_PERIOD, default=4s"`
25 ConcurrencyPerHost int `env:"CONCURRENCY, default=4"`
26}
27
28func Load(ctx context.Context) (*Config, error) {
29 var cfg Config
30 if err := envconfig.Process(ctx, &cfg); err != nil {
31 return nil, err
32 }
33 return &cfg, nil
34}