forked from tangled.org/core
Monorepo for Tangled — https://tangled.org
1package config 2 3import ( 4 "context" 5 6 "github.com/sethvargo/go-envconfig" 7) 8 9type Repo struct { 10 ScanPath string `env:"SCAN_PATH, default=/home/git"` 11 Readme []string `env:"README"` 12 MainBranch string `env:"MAIN_BRANCH, default=main"` 13} 14 15type Server struct { 16 ListenAddr string `env:"LISTEN_ADDR, default=0.0.0.0:5555"` 17 InternalListenAddr string `env:"INTERNAL_LISTEN_ADDR, default=127.0.0.1:5444"` 18 Secret string `env:"SECRET, required"` 19 DBPath string `env:"DB_PATH, default=knotserver.db"` 20 Hostname string `env:"HOSTNAME, required"` 21 JetstreamEndpoint string `env:"JETSTREAM_ENDPOINT, default=wss://jetstream1.us-west.bsky.network/subscribe"` 22 23 // This disables signature verification so use with caution. 24 Dev bool `env:"DEV, default=false"` 25} 26 27type Owner struct { 28 Did string `env:"DID, required"` 29 AppPassword string `env:"APP_PASSWORD, required"` 30} 31 32type Config struct { 33 Repo Repo `env:",prefix=KNOT_REPO_"` 34 Server Server `env:",prefix=KNOT_SERVER_"` 35 Owner Owner `env:",prefix=KNOT_OWNER_"` 36 AppViewEndpoint string `env:"APPVIEW_ENDPOINT, default=https://tangled.sh"` 37} 38 39func Load(ctx context.Context) (*Config, error) { 40 var cfg Config 41 err := envconfig.Process(ctx, &cfg) 42 if err != nil { 43 return nil, err 44 } 45 46 if cfg.Repo.Readme == nil { 47 cfg.Repo.Readme = []string{ 48 "README.md", "readme.md", 49 "README", 50 "readme", 51 "README.markdown", 52 "readme.markdown", 53 "README.txt", 54 "readme.txt", 55 "README.rst", 56 "readme.rst", 57 "README.org", 58 "readme.org", 59 "README.asciidoc", 60 "readme.asciidoc", 61 } 62 } 63 64 return &cfg, nil 65}