Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions docs/Custom_Command_Keybindings.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ The permitted contexts are:
| status | The 'Status' tab |
| files | The 'Files' tab |
| worktrees | The 'Worktrees' tab |
| submodules | The 'Submodules' tab |
| localBranches | The 'Local Branches' tab |
| remotes | The 'Remotes' tab |
| remoteBranches | The context you get when pressing enter on a remote in the remotes tab |
Expand Down Expand Up @@ -298,6 +299,7 @@ SelectedCommit
SelectedCommitRange
SelectedFile
SelectedPath
SelectedSubmodule
SelectedLocalBranch
SelectedRemoteBranch
SelectedRemote
Expand Down
6 changes: 6 additions & 0 deletions pkg/gui/services/custom_commands/models.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,12 @@ type File struct {
IsWorktree bool
}

type Submodule struct {
Name string
Path string
Url string
}

type Branch struct {
Name string
DisplayName string
Expand Down
14 changes: 14 additions & 0 deletions pkg/gui/services/custom_commands/session_state_loader.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,18 @@ func fileShimFromModelFile(file *models.File) *File {
}
}

func submoduleShimFromModelSubmodule(submodule *models.SubmoduleConfig) *Submodule {
if submodule == nil {
return nil
}

return &Submodule{
Name: submodule.Name,
Path: submodule.Path,
Url: submodule.Url,
}
}

func branchShimFromModelBranch(branch *models.Branch) *Branch {
if branch == nil {
return nil
Expand Down Expand Up @@ -186,6 +198,7 @@ type SessionState struct {
SelectedCommit *Commit
SelectedCommitRange *CommitRange
SelectedFile *File
SelectedSubmodule *Submodule
SelectedPath string
SelectedLocalBranch *Branch
SelectedRemoteBranch *RemoteBranch
Expand Down Expand Up @@ -225,6 +238,7 @@ func (self *SessionStateLoader) call() *SessionState {

return &SessionState{
SelectedFile: fileShimFromModelFile(self.c.Contexts().Files.GetSelectedFile()),
SelectedSubmodule: submoduleShimFromModelSubmodule(self.c.Contexts().Submodules.GetSelected()),
SelectedPath: selectedPath,
SelectedLocalCommit: selectedLocalCommit,
SelectedReflogCommit: selectedReflogCommit,
Expand Down
50 changes: 50 additions & 0 deletions pkg/integration/tests/custom_commands/selected_submodule.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package custom_commands

import (
"github.com/jesseduffield/lazygit/pkg/config"
. "github.com/jesseduffield/lazygit/pkg/integration/components"
)

var SelectedSubmodule = NewIntegrationTest(NewIntegrationTestArgs{
Description: "Use the {{ .SelectedSubmodule }} template variable",
ExtraCmdArgs: []string{},
Skip: false,
SetupRepo: func(shell *Shell) {
shell.EmptyCommit("Initial commit")
shell.CloneIntoSubmodule("submodule", "path/submodule")
shell.Commit("Add submodule")
},
SetupConfig: func(cfg *config.AppConfig) {
cfg.GetUserConfig().CustomCommands = []config.CustomCommand{
{
Key: "X",
Context: "submodules",
Command: "printf '%s' '{{ .SelectedSubmodule.Path }}' > file.txt",
},
{
Key: "U",
Context: "submodules",
Command: "printf '%s' '{{ .SelectedSubmodule.Url }}' > file.txt",
},
{
Key: "N",
Context: "submodules",
Command: "printf '%s' '{{ .SelectedSubmodule.Name }}' > file.txt",
},
}
},
Run: func(t *TestDriver, keys config.KeybindingConfig) {
t.Views().Submodules().
Focus().
NavigateToLine(Contains("submodule"))
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's the only line we have in that view, no need to navigate to it. We usually do

			Lines(
				Contains("submodule").IsSelected(),
			)

in cases like this.


t.Views().Submodules().Press("X")
t.FileSystem().FileContent("file.txt", Equals("path/submodule"))

t.Views().Submodules().Press("U")
t.FileSystem().FileContent("file.txt", Equals("../submodule"))

t.Views().Submodules().Press("N")
t.FileSystem().FileContent("file.txt", Equals("submodule"))
},
})
1 change: 1 addition & 0 deletions pkg/integration/tests/test_list.go
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,7 @@ var tests = []*components.IntegrationTest{
custom_commands.SelectedCommit,
custom_commands.SelectedCommitRange,
custom_commands.SelectedPath,
custom_commands.SelectedSubmodule,
custom_commands.ShowOutputInPanel,
custom_commands.SuggestionsCommand,
custom_commands.SuggestionsPreset,
Expand Down