diff --git a/pkg/commands/git.go b/pkg/commands/git.go index ad275d10f..40e4bccf7 100644 --- a/pkg/commands/git.go +++ b/pkg/commands/git.go @@ -1061,3 +1061,20 @@ func (c *GitCommand) BeginInteractiveRebaseForCommit(commits []*Commit, commitIn func (c *GitCommand) SetUpstreamBranch(upstream string) error { return c.OSCommand.RunCommand(fmt.Sprintf("git branch -u %s", upstream)) } + +func (c *GitCommand) GetRemotes() ([]*Remote, error) { + goGitRemotes, err := c.Repo.Remotes() + if err != nil { + return nil, err + } + + remotes := make([]*Remote, len(goGitRemotes)) + // TODO: consider including the goGitRemote itself + for i, goGitRemote := range goGitRemotes { + remotes[i] = &Remote{ + Name: goGitRemote.Config().Name, + Urls: goGitRemote.Config().URLs, + } + } + return remotes, nil +} diff --git a/pkg/commands/remote.go b/pkg/commands/remote.go new file mode 100644 index 000000000..7e9e5f6f8 --- /dev/null +++ b/pkg/commands/remote.go @@ -0,0 +1,14 @@ +package commands + +// Remote : A git remote +type Remote struct { + Name string + Urls []string + Selected bool +} + +// GetDisplayStrings returns the display string of a remote +func (r *Remote) GetDisplayStrings(isFocused bool) []string { + + return []string{r.Name} +}