summaryrefslogtreecommitdiffstats
path: root/pkg
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2019-11-17 10:23:06 +1100
committerJesse Duffield <jessedduffield@gmail.com>2019-11-21 22:07:14 +1100
commit1f3e1720a3a0bd31c0816a94d0b7c5bca1589f96 (patch)
tree5ad5c1f01b31cdf9e4fed9cdc0a4779a2bf442b8 /pkg
parentb7f2d0366b2c9b8ac034e426661db4ea72a7bb14 (diff)
split RemoteBranch out from Branch
Diffstat (limited to 'pkg')
-rw-r--r--pkg/commands/branch.go15
-rw-r--r--pkg/commands/loading_remotes.go18
-rw-r--r--pkg/commands/remote.go2
-rw-r--r--pkg/commands/remote_branch.go18
-rw-r--r--pkg/gui/gui.go4
-rw-r--r--pkg/gui/remote_branches_panel.go2
-rw-r--r--pkg/gui/remotes_panel.go1
-rw-r--r--pkg/gui/status_panel.go3
8 files changed, 46 insertions, 17 deletions
diff --git a/pkg/commands/branch.go b/pkg/commands/branch.go
index d1cafdfb4..42d43507f 100644
--- a/pkg/commands/branch.go
+++ b/pkg/commands/branch.go
@@ -22,7 +22,7 @@ type Branch struct {
// GetDisplayStrings returns the display string of branch
func (b *Branch) GetDisplayStrings(isFocused bool) []string {
- displayName := utils.ColoredString(b.Name, b.GetColor())
+ displayName := utils.ColoredString(b.Name, GetBranchColor(b.Name))
if isFocused && b.Selected && b.Pushables != "" && b.Pullables != "" {
displayName = fmt.Sprintf("%s ā†‘%sā†“%s", displayName, b.Pushables, b.Pullables)
}
@@ -30,9 +30,11 @@ func (b *Branch) GetDisplayStrings(isFocused bool) []string {
return []string{b.Recency, displayName}
}
-// GetColor branch color
-func (b *Branch) GetColor() color.Attribute {
- switch b.getType() {
+// GetBranchColor branch color
+func GetBranchColor(name string) color.Attribute {
+ branchType := strings.Split(name, "/")[0]
+
+ switch branchType {
case "feature":
return color.FgGreen
case "bugfix":
@@ -43,8 +45,3 @@ func (b *Branch) GetColor() color.Attribute {
return theme.DefaultTextColor
}
}
-
-// expected to return feature/bugfix/hotfix or blank string
-func (b *Branch) getType() string {
- return strings.Split(b.Name, "/")[0]
-}
diff --git a/pkg/commands/loading_remotes.go b/pkg/commands/loading_remotes.go
index 8b6b47d57..dc5dcac44 100644
--- a/pkg/commands/loading_remotes.go
+++ b/pkg/commands/loading_remotes.go
@@ -3,6 +3,8 @@ package commands
import (
"fmt"
"regexp"
+ "sort"
+ "strings"
)
func (c *GitCommand) GetRemotes() ([]*Remote, error) {
@@ -24,9 +26,9 @@ func (c *GitCommand) GetRemotes() ([]*Remote, error) {
re := regexp.MustCompile(fmt.Sprintf("%s\\/(.*)", name))
matches := re.FindAllStringSubmatch(remoteBranchesStr, -1)
- branches := make([]*Branch, len(matches))
+ branches := make([]*RemoteBranch, len(matches))
for j, match := range matches {
- branches[j] = &Branch{
+ branches[j] = &RemoteBranch{
Name: match[1],
}
}
@@ -38,5 +40,17 @@ func (c *GitCommand) GetRemotes() ([]*Remote, error) {
}
}
+ // now lets sort our remotes by name alphabetically
+ sort.Slice(remotes, func(i, j int) bool {
+ // we want origin at the top because we'll be most likely to want it
+ if remotes[i].Name == "origin" {
+ return true
+ }
+ if remotes[j].Name == "origin" {
+ return false
+ }
+ return strings.ToLower(remotes[i].Name) < strings.ToLower(remotes[j].Name)
+ })
+
return remotes, nil
}
diff --git a/pkg/commands/remote.go b/pkg/commands/remote.go
index 8f2941505..d61f81a53 100644
--- a/pkg/commands/remote.go
+++ b/pkg/commands/remote.go
@@ -5,7 +5,7 @@ type Remote struct {
Name string
Urls []string
Selected bool
- Branches []*Branch
+ Branches []*RemoteBranch
}
// GetDisplayStrings returns the display string of a remote
diff --git a/pkg/commands/remote_branch.go b/pkg/commands/remote_branch.go
new file mode 100644
index 000000000..18e58fa85
--- /dev/null
+++ b/pkg/commands/remote_branch.go
@@ -0,0 +1,18 @@
+package commands
+
+import (
+ "github.com/jesseduffield/lazygit/pkg/utils"
+)
+
+// Remote Branch : A git remote branch
+type RemoteBranch struct {
+ Name string
+ Selected bool
+}
+
+// GetDisplayStrings returns the display string of branch
+func (b *RemoteBranch) GetDisplayStrings(isFocused bool) []string {
+ displayName := utils.ColoredString(b.Name, GetBranchColor(b.Name))
+
+ return []string{displayName}
+}
diff --git a/pkg/gui/gui.go b/pkg/gui/gui.go
index ffb9e00d3..c08c82817 100644
--- a/pkg/gui/gui.go
+++ b/pkg/gui/gui.go
@@ -165,8 +165,8 @@ type guiState struct {
CommitFiles []*commands.CommitFile
DiffEntries []*commands.Commit
Remotes []*commands.Remote
- RemoteBranches []*commands.Branch // using Branch for now because they're basically the same
- MenuItemCount int // can't store the actual list because it's of interface{} type
+ RemoteBranches []*commands.RemoteBranch
+ MenuItemCount int // can't store the actual list because it's of interface{} type
PreviousView string
Platform commands.Platform
Updating bool
diff --git a/pkg/gui/remote_branches_panel.go b/pkg/gui/remote_branches_panel.go
index 93978bc3c..544e8bf81 100644
--- a/pkg/gui/remote_branches_panel.go
+++ b/pkg/gui/remote_branches_panel.go
@@ -12,7 +12,7 @@ import (
// list panel functions
-func (gui *Gui) getSelectedRemoteBranch() *commands.Branch {
+func (gui *Gui) getSelectedRemoteBranch() *commands.RemoteBranch {
selectedLine := gui.State.Panels.RemoteBranches.SelectedLine
if selectedLine == -1 || len(gui.State.RemoteBranches) == 0 {
return nil
diff --git a/pkg/gui/remotes_panel.go b/pkg/gui/remotes_panel.go
index 38ec8b44b..c63b2f07d 100644
--- a/pkg/gui/remotes_panel.go
+++ b/pkg/gui/remotes_panel.go
@@ -43,7 +43,6 @@ func (gui *Gui) handleRemoteSelect(g *gocui.Gui, v *gocui.View) error {
gui.getMainView().Title = "Remote"
remote := gui.getSelectedRemote()
- gui.focusPoint(0, gui.State.Panels.Menu.SelectedLine, gui.State.MenuItemCount, v)
if err := gui.focusPoint(0, gui.State.Panels.Remotes.SelectedLine, len(gui.State.Remotes), v); err != nil {
return err
}
diff --git a/pkg/gui/status_panel.go b/pkg/gui/status_panel.go
index 6ad1c9d56..c351f24e8 100644
--- a/pkg/gui/status_panel.go
+++ b/pkg/gui/status_panel.go
@@ -6,6 +6,7 @@ import (
"github.com/fatih/color"
"github.com/jesseduffield/gocui"
+ "github.com/jesseduffield/lazygit/pkg/commands"
"github.com/jesseduffield/lazygit/pkg/utils"
)
@@ -34,7 +35,7 @@ func (gui *Gui) refreshStatus(g *gocui.Gui) error {
if len(branches) > 0 {
branch := branches[0]
- name := utils.ColoredString(branch.Name, branch.GetColor())
+ name := utils.ColoredString(branch.Name, commands.GetBranchColor(branch.Name))
repoName := utils.GetCurrentRepoName()
status += fmt.Sprintf(" %s ā†’ %s", repoName, name)
}