1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2024-12-14 11:23:09 +02:00
lazygit/pkg/gui/presentation/icons/git_icons.go

67 lines
1.4 KiB
Go
Raw Normal View History

2022-04-23 03:41:40 +02:00
package icons
2022-04-23 03:57:51 +02:00
import (
2022-04-23 04:42:24 +02:00
"strings"
2022-04-23 03:57:51 +02:00
"github.com/jesseduffield/lazygit/pkg/commands/models"
)
2022-04-23 03:41:40 +02:00
2022-04-23 04:42:24 +02:00
const (
BRANCH_ICON = "\ufb2b" // שׂ
DETACHED_HEAD_ICON = "\ue729" // 
TAG_ICON = "\uf02b" // 
COMMIT_ICON = "\ufc16" // ﰖ
MERGE_COMMIT_ICON = "\ufb2c" // שּׁ
DEFAULT_REMOTE_ICON = "\uf7a1" // 
2022-10-14 14:56:01 +02:00
STASH_ICON = "\uf01c" // 
2022-04-23 04:42:24 +02:00
)
type remoteIcon struct {
domain string
icon string
}
var remoteIcons = []remoteIcon{
{domain: "github.com", icon: "\ue709"}, // 
{domain: "bitbucket.org", icon: "\ue703"}, // 
{domain: "gitlab.com", icon: "\uf296"}, // 
{domain: "dev.azure.com", icon: "\ufd03"}, // ﴃ
}
2022-04-23 03:57:51 +02:00
func IconForBranch(branch *models.Branch) string {
if branch.DetachedHead {
2022-04-23 03:57:51 +02:00
return DETACHED_HEAD_ICON
}
return BRANCH_ICON
}
func IconForRemoteBranch(branch *models.RemoteBranch) string {
return BRANCH_ICON
}
func IconForTag(tag *models.Tag) string {
return TAG_ICON
}
2022-04-23 03:41:40 +02:00
func IconForCommit(commit *models.Commit) string {
if len(commit.Parents) > 1 {
return MERGE_COMMIT_ICON
}
return COMMIT_ICON
}
2022-04-23 04:42:24 +02:00
func IconForRemote(remote *models.Remote) string {
for _, r := range remoteIcons {
for _, url := range remote.Urls {
if strings.Contains(url, r.domain) {
return r.icon
}
}
}
return DEFAULT_REMOTE_ICON
}
2022-10-14 14:56:01 +02:00
func IconForStash(stash *models.StashEntry) string {
return STASH_ICON
}