mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-07-28 16:02:01 +03:00
Expose {{.SelectedCommitRange}} to custom commands
It has fields .To and .From (the hashes of the last and the first selected commits, respectively), and it is useful for creating git commands that act on a range of commits.
This commit is contained in:
@ -162,12 +162,29 @@ func worktreeShimFromModelRemote(worktree *models.Worktree) *Worktree {
|
||||
}
|
||||
}
|
||||
|
||||
type CommitRange struct {
|
||||
From string
|
||||
To string
|
||||
}
|
||||
|
||||
func makeCommitRange(commits []*models.Commit, _ int, _ int) *CommitRange {
|
||||
if len(commits) == 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
return &CommitRange{
|
||||
From: commits[len(commits)-1].Hash,
|
||||
To: commits[0].Hash,
|
||||
}
|
||||
}
|
||||
|
||||
// SessionState captures the current state of the application for use in custom commands
|
||||
type SessionState struct {
|
||||
SelectedLocalCommit *Commit // deprecated, use SelectedCommit
|
||||
SelectedReflogCommit *Commit // deprecated, use SelectedCommit
|
||||
SelectedSubCommit *Commit // deprecated, use SelectedCommit
|
||||
SelectedCommit *Commit
|
||||
SelectedCommitRange *CommitRange
|
||||
SelectedFile *File
|
||||
SelectedPath string
|
||||
SelectedLocalBranch *Branch
|
||||
@ -183,14 +200,20 @@ type SessionState struct {
|
||||
|
||||
func (self *SessionStateLoader) call() *SessionState {
|
||||
selectedLocalCommit := commitShimFromModelCommit(self.c.Contexts().LocalCommits.GetSelected())
|
||||
selectedLocalCommitRange := makeCommitRange(self.c.Contexts().LocalCommits.GetSelectedItems())
|
||||
selectedReflogCommit := commitShimFromModelCommit(self.c.Contexts().ReflogCommits.GetSelected())
|
||||
selectedReflogCommitRange := makeCommitRange(self.c.Contexts().ReflogCommits.GetSelectedItems())
|
||||
selectedSubCommit := commitShimFromModelCommit(self.c.Contexts().SubCommits.GetSelected())
|
||||
selectedSubCommitRange := makeCommitRange(self.c.Contexts().SubCommits.GetSelectedItems())
|
||||
|
||||
selectedCommit := selectedLocalCommit
|
||||
selectedCommitRange := selectedLocalCommitRange
|
||||
if self.c.Context().IsCurrentOrParent(self.c.Contexts().ReflogCommits) {
|
||||
selectedCommit = selectedReflogCommit
|
||||
selectedCommitRange = selectedReflogCommitRange
|
||||
} else if self.c.Context().IsCurrentOrParent(self.c.Contexts().SubCommits) {
|
||||
selectedCommit = selectedSubCommit
|
||||
selectedCommitRange = selectedSubCommitRange
|
||||
}
|
||||
|
||||
selectedPath := self.c.Contexts().Files.GetSelectedPath()
|
||||
@ -207,6 +230,7 @@ func (self *SessionStateLoader) call() *SessionState {
|
||||
SelectedReflogCommit: selectedReflogCommit,
|
||||
SelectedSubCommit: selectedSubCommit,
|
||||
SelectedCommit: selectedCommit,
|
||||
SelectedCommitRange: selectedCommitRange,
|
||||
SelectedLocalBranch: branchShimFromModelBranch(self.c.Contexts().Branches.GetSelected()),
|
||||
SelectedRemoteBranch: remoteBranchShimFromModelRemoteBranch(self.c.Contexts().RemoteBranches.GetSelected()),
|
||||
SelectedRemote: remoteShimFromModelRemote(self.c.Contexts().Remotes.GetSelected()),
|
||||
|
Reference in New Issue
Block a user