e228d7dbe7b65a52a7e65009c39d025592a8249b

Author
Toby Padilla <toby@charm.sh>
Committer
Toby Padilla <toby@charm.sh>
Date

Message

Load repo by name

Diff

 1diff --git a/git/git.go b/git/git.go
 2index 68783e4b29d46b8fc359e4222fa5d371efd866ba..87a9658ef1e2816928674ef2737e6e5983366793 100644
 3--- a/git/git.go
 4+++ b/git/git.go
 5@@ -1,6 +1,7 @@
 6 package git
 7 
 8 import (
 9+	"errors"
10 	"log"
11 	"os"
12 	"sort"
13@@ -11,6 +12,8 @@ import (
14 	"github.com/go-git/go-git/v5/plumbing/object"
15 )
16 
17+var ErrMissingRepo = errors.New("missing repo")
18+
19 type Repo struct {
20 	Name        string
21 	Repository  *git.Repository
22@@ -58,6 +61,17 @@ func (rs *RepoSource) AllRepos() []*Repo {
23 	return rs.repos
24 }
25 
26+func (rs *RepoSource) GetRepo(name string) (*Repo, error) {
27+	rs.mtx.Lock()
28+	defer rs.mtx.Unlock()
29+	for _, r := range rs.repos {
30+		if r.Name == name {
31+			return r, nil
32+		}
33+	}
34+	return nil, ErrMissingRepo
35+}
36+
37 func (rs *RepoSource) GetCommits(limit int) []RepoCommit {
38 	rs.mtx.Lock()
39 	defer rs.mtx.Unlock()
40diff --git a/tui/bubble.go b/tui/bubble.go
41index 42fdef6b01732ffa202c81d70101a78b7d179b3a..d16ca4bc0411eb73d18bfd73c9c4c93b5bdf8086 100644
42--- a/tui/bubble.go
43+++ b/tui/bubble.go
44@@ -83,12 +83,7 @@ func (b *Bubble) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
45 		b.width = msg.Width
46 		b.height = msg.Height
47 	case selection.SelectedMsg:
48-		rmd := b.repos[msg.Index].Readme
49-		b.readmeViewport.Viewport.GotoTop()
50-		b.readmeViewport.Viewport.Height = b.height - verticalPadding - viewportHeightConstant
51-		b.readmeViewport.Viewport.Width = boxLeftWidth - 2
52-		b.readmeViewport.Viewport.SetContent(rmd)
53-		b.boxes[1] = b.readmeViewport
54+		cmds = append(cmds, b.getRepoCmd(b.repos[msg.Index].Name))
55 	}
56 	if b.state == loadedState {
57 		ab, cmd := b.boxes[b.activeBox].Update(msg)
58diff --git a/tui/commands.go b/tui/commands.go
59index c7c62427a1376db76470d5717989f7b3bb3d4859..d1749ae0e9d103ca481a8f58e036212492abb642 100644
60--- a/tui/commands.go
61+++ b/tui/commands.go
62@@ -21,6 +21,22 @@ func (b *Bubble) windowChangesCmd() tea.Msg {
63 	return windowMsg{}
64 }
65 
66+func (b *Bubble) getRepoCmd(name string) tea.Cmd {
67+	return func() tea.Msg {
68+		r, err := b.repoSource.GetRepo(name)
69+		if err != nil {
70+			return errMsg{err}
71+		}
72+		b.readmeViewport.Viewport.GotoTop()
73+		b.readmeViewport.Viewport.Height = b.height - verticalPadding - viewportHeightConstant
74+		b.readmeViewport.Viewport.Width = boxLeftWidth - 2
75+		b.readmeViewport.Viewport.SetContent(r.Readme)
76+		b.boxes[1] = b.readmeViewport
77+		b.activeBox = 1
78+		return nil
79+	}
80+}
81+
82 func (b *Bubble) loadGitCmd() tea.Msg {
83 	b.repos = b.repoSource.AllRepos()
84 	rs := make([]string, 0)