Diff
1diff --git a/tui/bubble.go b/tui/bubble.go
2index 8d1080a35acdba204757bb215d32716665e3b8d1..f6f1c021ea4c0c9a5d5cbc78ac2abc8eaa5a7d62 100644
3--- a/tui/bubble.go
4+++ b/tui/bubble.go
5@@ -164,28 +164,56 @@ func glamourReadme(md string) string {
6 return mdt
7 }
8
9+func loadConfig(rs *git.RepoSource) (*Config, error) {
10+ cfg := &Config{}
11+ cfg.RepoSource = rs
12+ cr, err := rs.GetRepo("config")
13+ if err != nil {
14+ return nil, fmt.Errorf("cannot load config repo: %s", err)
15+ }
16+ cs, err := cr.LatestFile("config.json")
17+ if err != nil {
18+ return nil, fmt.Errorf("cannot load config.json: %s", err)
19+ }
20+ err = json.Unmarshal([]byte(cs), cfg)
21+ if err != nil {
22+ return nil, fmt.Errorf("bad json in config.json: %s", err)
23+ }
24+ return cfg, nil
25+}
26+
27 func SessionHandler(reposPath string, repoPoll time.Duration) func(ssh.Session) (tea.Model, []tea.ProgramOption) {
28- appCfg := &Config{}
29 rs := git.NewRepoSource(reposPath, glamourReadme)
30- appCfg.RepoSource = rs
31- go func() {
32- for {
33- _ = rs.LoadRepos()
34- cr, err := rs.GetRepo("config")
35- if err != nil {
36- log.Fatalf("cannot load config repo: %s", err)
37- }
38- cs, err := cr.LatestFile("config.json")
39- err = json.Unmarshal([]byte(cs), appCfg)
40- time.Sleep(repoPoll)
41- }
42- }()
43 err := createDefaultConfigRepo(rs)
44 if err != nil {
45 if err != nil {
46 log.Fatalf("cannot create config repo: %s", err)
47 }
48 }
49+ appCfg, err := loadConfig(rs)
50+ if err != nil {
51+ if err != nil {
52+ log.Printf("cannot load config: %s", err)
53+ }
54+ }
55+ go func() {
56+ for {
57+ time.Sleep(repoPoll)
58+ err := rs.LoadRepos()
59+ if err != nil {
60+ log.Printf("cannot load repos: %s", err)
61+ continue
62+ }
63+ cfg, err := loadConfig(rs)
64+ if err != nil {
65+ if err != nil {
66+ log.Printf("cannot load config: %s", err)
67+ continue
68+ }
69+ }
70+ appCfg = cfg
71+ }
72+ }()
73
74 return func(s ssh.Session) (tea.Model, []tea.ProgramOption) {
75 if len(s.Command()) == 0 {