A vibe coded tangled fork which supports pijul.
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}