mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-01-06 03:53:59 +02:00
WIP
This commit is contained in:
parent
66e840bc3f
commit
96c2887fd0
@ -1,28 +0,0 @@
|
||||
package commands
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
"path/filepath"
|
||||
|
||||
"github.com/jesseduffield/lazygit/pkg/commands/loaders"
|
||||
"github.com/jesseduffield/lazygit/pkg/commands/oscommands"
|
||||
"github.com/jesseduffield/lazygit/pkg/common"
|
||||
)
|
||||
|
||||
// this file defines constructors for loaders, passing in all the dependencies required based on a smaller set of arguments passed in by the client.
|
||||
|
||||
func NewCommitLoader(
|
||||
cmn *common.Common,
|
||||
gitCommand *GitCommand,
|
||||
osCommand *oscommands.OSCommand,
|
||||
) *loaders.CommitLoader {
|
||||
return loaders.NewCommitLoader(
|
||||
cmn,
|
||||
gitCommand.Cmd,
|
||||
gitCommand.CurrentBranchName,
|
||||
gitCommand.RebaseMode,
|
||||
ioutil.ReadFile,
|
||||
filepath.Walk,
|
||||
gitCommand.DotGitDir,
|
||||
)
|
||||
}
|
@ -1,9 +1,10 @@
|
||||
package commands
|
||||
package loaders
|
||||
|
||||
import (
|
||||
"regexp"
|
||||
"strings"
|
||||
|
||||
"github.com/jesseduffield/lazygit/pkg/commands"
|
||||
"github.com/jesseduffield/lazygit/pkg/commands/models"
|
||||
"github.com/jesseduffield/lazygit/pkg/common"
|
||||
"github.com/jesseduffield/lazygit/pkg/utils"
|
||||
@ -20,32 +21,29 @@ import (
|
||||
// if we find out we need to use one of these functions in the git.go file, we
|
||||
// can just pull them out of here and put them there and then call them from in here
|
||||
|
||||
const SEPARATION_CHAR = "|"
|
||||
|
||||
// BranchListBuilder returns a list of Branch objects for the current repo
|
||||
type BranchListBuilder struct {
|
||||
// BranchLoader returns a list of Branch objects for the current repo
|
||||
type BranchLoader struct {
|
||||
*common.Common
|
||||
getRawBranches func() (string, error)
|
||||
getCurrentBranchName func() (string, string, error)
|
||||
reflogCommits []*models.Commit
|
||||
}
|
||||
|
||||
func NewBranchListBuilder(
|
||||
func NewBranchLoader(
|
||||
cmn *common.Common,
|
||||
getRawBranches func() (string, error),
|
||||
getCurrentBranchName func() (string, string, error),
|
||||
gitCommand *commands.GitCommand,
|
||||
reflogCommits []*models.Commit,
|
||||
) *BranchListBuilder {
|
||||
return &BranchListBuilder{
|
||||
) *BranchLoader {
|
||||
return &BranchLoader{
|
||||
Common: cmn,
|
||||
getRawBranches: getRawBranches,
|
||||
getCurrentBranchName: getCurrentBranchName,
|
||||
getRawBranches: gitCommand.GetRawBranches,
|
||||
getCurrentBranchName: gitCommand.CurrentBranchName,
|
||||
reflogCommits: reflogCommits,
|
||||
}
|
||||
}
|
||||
|
||||
// Build the list of branches for the current repo
|
||||
func (b *BranchListBuilder) Build() []*models.Branch {
|
||||
// Load the list of branches for the current repo
|
||||
func (b *BranchLoader) Load() []*models.Branch {
|
||||
branches := b.obtainBranches()
|
||||
|
||||
reflogBranches := b.obtainReflogBranches()
|
||||
@ -89,7 +87,7 @@ outer:
|
||||
return branches
|
||||
}
|
||||
|
||||
func (b *BranchListBuilder) obtainBranches() []*models.Branch {
|
||||
func (b *BranchLoader) obtainBranches() []*models.Branch {
|
||||
output, err := b.getRawBranches()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
@ -152,7 +150,7 @@ func (b *BranchListBuilder) obtainBranches() []*models.Branch {
|
||||
|
||||
// TODO: only look at the new reflog commits, and otherwise store the recencies in
|
||||
// int form against the branch to recalculate the time ago
|
||||
func (b *BranchListBuilder) obtainReflogBranches() []*models.Branch {
|
||||
func (b *BranchLoader) obtainReflogBranches() []*models.Branch {
|
||||
foundBranchesMap := map[string]bool{}
|
||||
re := regexp.MustCompile(`checkout: moving from ([\S]+) to ([\S]+)`)
|
||||
reflogBranches := make([]*models.Branch, 0, len(b.reflogCommits))
|
@ -2,12 +2,14 @@ package loaders
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/jesseduffield/lazygit/pkg/commands"
|
||||
"github.com/jesseduffield/lazygit/pkg/commands/models"
|
||||
"github.com/jesseduffield/lazygit/pkg/commands/oscommands"
|
||||
"github.com/jesseduffield/lazygit/pkg/commands/types/enums"
|
||||
@ -35,23 +37,20 @@ type CommitLoader struct {
|
||||
dotGitDir string
|
||||
}
|
||||
|
||||
// making our dependencies explicit for the sake of easier testing
|
||||
func NewCommitLoader(
|
||||
common *common.Common,
|
||||
cmd oscommands.ICmdObjBuilder,
|
||||
getCurrentBranchName func() (string, string, error),
|
||||
getRebaseMode func() (enums.RebaseMode, error),
|
||||
readFile func(filename string) ([]byte, error),
|
||||
walkFiles func(root string, fn filepath.WalkFunc) error,
|
||||
dotGitDir string,
|
||||
cmn *common.Common,
|
||||
gitCommand *commands.GitCommand,
|
||||
osCommand *oscommands.OSCommand,
|
||||
) *CommitLoader {
|
||||
return &CommitLoader{
|
||||
Common: common,
|
||||
cmd: cmd,
|
||||
getCurrentBranchName: getCurrentBranchName,
|
||||
getRebaseMode: getRebaseMode,
|
||||
readFile: readFile,
|
||||
walkFiles: walkFiles,
|
||||
dotGitDir: dotGitDir,
|
||||
Common: cmn,
|
||||
cmd: gitCommand.Cmd,
|
||||
getCurrentBranchName: gitCommand.CurrentBranchName,
|
||||
getRebaseMode: gitCommand.RebaseMode,
|
||||
readFile: ioutil.ReadFile,
|
||||
walkFiles: filepath.Walk,
|
||||
dotGitDir: gitCommand.DotGitDir,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -55,7 +55,7 @@ func TestOSCommandRun(t *testing.T) {
|
||||
|
||||
for _, s := range scenarios {
|
||||
c := NewDummyOSCommand()
|
||||
s.test(c.Cmd.New(s.command)).Run()
|
||||
s.test(c.Cmd.New(s.command).Run())
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -6,6 +6,7 @@ import (
|
||||
"strings"
|
||||
|
||||
"github.com/jesseduffield/lazygit/pkg/commands"
|
||||
"github.com/jesseduffield/lazygit/pkg/commands/loaders"
|
||||
"github.com/jesseduffield/lazygit/pkg/commands/models"
|
||||
"github.com/jesseduffield/lazygit/pkg/commands/oscommands"
|
||||
"github.com/jesseduffield/lazygit/pkg/utils"
|
||||
@ -61,13 +62,12 @@ func (gui *Gui) refreshBranches() {
|
||||
}
|
||||
}
|
||||
|
||||
builder := commands.NewBranchListBuilder(
|
||||
loader := loaders.NewBranchLoader(
|
||||
gui.Common,
|
||||
gui.GitCommand.GetRawBranches,
|
||||
gui.GitCommand.CurrentBranchName,
|
||||
gui.GitCommand,
|
||||
reflogCommits,
|
||||
)
|
||||
gui.State.Branches = builder.Build()
|
||||
gui.State.Branches = loader.Load()
|
||||
|
||||
if err := gui.postRefreshUpdate(gui.State.Contexts.Branches); err != nil {
|
||||
gui.Log.Error(err)
|
||||
|
@ -4,7 +4,6 @@ import (
|
||||
"fmt"
|
||||
"sync"
|
||||
|
||||
"github.com/jesseduffield/lazygit/pkg/commands"
|
||||
"github.com/jesseduffield/lazygit/pkg/commands/loaders"
|
||||
"github.com/jesseduffield/lazygit/pkg/commands/models"
|
||||
"github.com/jesseduffield/lazygit/pkg/commands/oscommands"
|
||||
@ -120,7 +119,7 @@ func (gui *Gui) refreshCommitsWithLimit() error {
|
||||
gui.Mutexes.BranchCommitsMutex.Lock()
|
||||
defer gui.Mutexes.BranchCommitsMutex.Unlock()
|
||||
|
||||
loader := commands.NewCommitLoader(gui.Common, gui.GitCommand, gui.OSCommand)
|
||||
loader := loaders.NewCommitLoader(gui.Common, gui.GitCommand, gui.OSCommand)
|
||||
|
||||
commits, err := loader.GetCommits(
|
||||
loaders.GetCommitsOptions{
|
||||
@ -143,7 +142,7 @@ func (gui *Gui) refreshRebaseCommits() error {
|
||||
gui.Mutexes.BranchCommitsMutex.Lock()
|
||||
defer gui.Mutexes.BranchCommitsMutex.Unlock()
|
||||
|
||||
loader := commands.NewCommitLoader(gui.Common, gui.GitCommand, gui.OSCommand)
|
||||
loader := loaders.NewCommitLoader(gui.Common, gui.GitCommand, gui.OSCommand)
|
||||
|
||||
updatedCommits, err := loader.MergeRebasingCommits(gui.State.Commits)
|
||||
if err != nil {
|
||||
|
@ -1,7 +1,6 @@
|
||||
package gui
|
||||
|
||||
import (
|
||||
"github.com/jesseduffield/lazygit/pkg/commands"
|
||||
"github.com/jesseduffield/lazygit/pkg/commands/loaders"
|
||||
"github.com/jesseduffield/lazygit/pkg/commands/models"
|
||||
)
|
||||
@ -76,7 +75,7 @@ func (gui *Gui) handleViewSubCommitFiles() error {
|
||||
|
||||
func (gui *Gui) switchToSubCommitsContext(refName string) error {
|
||||
// need to populate my sub commits
|
||||
loader := commands.NewCommitLoader(gui.Common, gui.GitCommand, gui.OSCommand)
|
||||
loader := loaders.NewCommitLoader(gui.Common, gui.GitCommand, gui.OSCommand)
|
||||
|
||||
commits, err := loader.GetCommits(
|
||||
loaders.GetCommitsOptions{
|
||||
|
Loading…
Reference in New Issue
Block a user