A vibe coded tangled fork which supports pijul.
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"`
13}
14
15type Server struct {
16 Host string `env:"HOST, default=0.0.0.0"`
17 Port int `env:"PORT, default=5555"`
18 InternalPort int `env:"PORT, default=5444"`
19 Secret string `env:"SECRET, required"`
20 DBPath string `env:"DB_PATH, default=knotserver.db"`
21 // This disables signature verification so use with caution.
22 Dev bool `env:"DEV, default=false"`
23}
24
25type Config struct {
26 Repo Repo `env:",prefix=KNOT_REPO_"`
27 Server Server `env:",prefix=KNOT_SERVER_"`
28 AppViewEndpoint string `env:"APPVIEW_ENDPOINT, default=https://tangled.sh"`
29}
30
31func Load(ctx context.Context) (*Config, error) {
32 var cfg Config
33 err := envconfig.Process(ctx, &cfg)
34 if err != nil {
35 return nil, err
36 }
37
38 if cfg.Repo.Readme == nil {
39 cfg.Repo.Readme = []string{
40 "README.md", "readme.md",
41 "README",
42 "readme",
43 "README.markdown",
44 "readme.markdown",
45 "README.txt",
46 "readme.txt",
47 "README.rst",
48 "readme.rst",
49 "README.org",
50 "readme.org",
51 "README.asciidoc",
52 "readme.asciidoc",
53 }
54 }
55
56 return &cfg, nil
57}