A vibe coded tangled fork which supports pijul.
at 5bf28708dcf8972c724fb0c33fcab1281cbc3f27 77 lines 2.1 kB view raw
1package config 2 3import ( 4 "context" 5 "fmt" 6 "strings" 7 8 "github.com/bluesky-social/indigo/atproto/syntax" 9 "github.com/sethvargo/go-envconfig" 10) 11 12type Repo struct { 13 ScanPath string `env:"SCAN_PATH, default=/home/git"` 14 Readme []string `env:"README"` 15 MainBranch string `env:"MAIN_BRANCH, default=main"` 16} 17 18type Server struct { 19 ListenAddr string `env:"LISTEN_ADDR, default=0.0.0.0:5555"` 20 InternalListenAddr string `env:"INTERNAL_LISTEN_ADDR, default=127.0.0.1:5444"` 21 DBPath string `env:"DB_PATH, default=knotserver.db"` 22 Hostname string `env:"HOSTNAME, required"` 23 PlcUrl string `env:"PLC_URL, default=https://plc.directory"` 24 JetstreamEndpoint string `env:"JETSTREAM_ENDPOINT, default=wss://jetstream1.us-west.bsky.network/subscribe"` 25 Owner string `env:"OWNER, required"` 26 LogDids bool `env:"LOG_DIDS, default=true"` 27 28 // This disables signature verification so use with caution. 29 Dev bool `env:"DEV, default=false"` 30} 31 32type Git struct { 33 // user name & email used as committer 34 UserName string `env:"USER_NAME, default=Tangled"` 35 UserEmail string `env:"USER_EMAIL, default=noreply@tangled.sh"` 36} 37 38func (s Server) Did() syntax.DID { 39 // did:web spec requires colons to be encoded as %3A 40 encoded := strings.ReplaceAll(s.Hostname, ":", "%3A") 41 return syntax.DID(fmt.Sprintf("did:web:%s", encoded)) 42} 43 44type Config struct { 45 Repo Repo `env:",prefix=KNOT_REPO_"` 46 Server Server `env:",prefix=KNOT_SERVER_"` 47 Git Git `env:",prefix=KNOT_GIT_"` 48 AppViewEndpoint string `env:"APPVIEW_ENDPOINT, default=https://tangled.org"` 49} 50 51func Load(ctx context.Context) (*Config, error) { 52 var cfg Config 53 err := envconfig.Process(ctx, &cfg) 54 if err != nil { 55 return nil, err 56 } 57 58 if cfg.Repo.Readme == nil { 59 cfg.Repo.Readme = []string{ 60 "README.md", "readme.md", 61 "README", 62 "readme", 63 "README.markdown", 64 "readme.markdown", 65 "README.txt", 66 "readme.txt", 67 "README.rst", 68 "readme.rst", 69 "README.org", 70 "readme.org", 71 "README.asciidoc", 72 "readme.asciidoc", 73 } 74 } 75 76 return &cfg, nil 77}