1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-11-22 04:42:37 +03:00

Add SelectedSubmodule to SessionState

Introduce the 'SelectedSubmodule' struct and allow using it as a
placeholder value.
Add a corresponding test.
Update the documentation to include it among the listed placeholder
values.
This commit is contained in:
rlkandela
2025-11-11 11:41:33 +01:00
committed by Stefan Haller
parent 7d1c3f7a28
commit 374f0f0766
5 changed files with 74 additions and 0 deletions

View File

@@ -299,6 +299,7 @@ SelectedCommit
SelectedCommitRange SelectedCommitRange
SelectedFile SelectedFile
SelectedPath SelectedPath
SelectedSubmodule
SelectedLocalBranch SelectedLocalBranch
SelectedRemoteBranch SelectedRemoteBranch
SelectedRemote SelectedRemote

View File

@@ -43,6 +43,12 @@ type File struct {
IsWorktree bool IsWorktree bool
} }
type Submodule struct {
Name string
Path string
Url string
}
type Branch struct { type Branch struct {
Name string Name string
DisplayName string DisplayName string

View File

@@ -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 { func branchShimFromModelBranch(branch *models.Branch) *Branch {
if branch == nil { if branch == nil {
return nil return nil
@@ -186,6 +198,7 @@ type SessionState struct {
SelectedCommit *Commit SelectedCommit *Commit
SelectedCommitRange *CommitRange SelectedCommitRange *CommitRange
SelectedFile *File SelectedFile *File
SelectedSubmodule *Submodule
SelectedPath string SelectedPath string
SelectedLocalBranch *Branch SelectedLocalBranch *Branch
SelectedRemoteBranch *RemoteBranch SelectedRemoteBranch *RemoteBranch
@@ -225,6 +238,7 @@ func (self *SessionStateLoader) call() *SessionState {
return &SessionState{ return &SessionState{
SelectedFile: fileShimFromModelFile(self.c.Contexts().Files.GetSelectedFile()), SelectedFile: fileShimFromModelFile(self.c.Contexts().Files.GetSelectedFile()),
SelectedSubmodule: submoduleShimFromModelSubmodule(self.c.Contexts().Submodules.GetSelected()),
SelectedPath: selectedPath, SelectedPath: selectedPath,
SelectedLocalCommit: selectedLocalCommit, SelectedLocalCommit: selectedLocalCommit,
SelectedReflogCommit: selectedReflogCommit, SelectedReflogCommit: selectedReflogCommit,

View File

@@ -0,0 +1,52 @@
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().
Lines(
Contains("submodule").IsSelected(),
)
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"))
},
})

View File

@@ -178,6 +178,7 @@ var tests = []*components.IntegrationTest{
custom_commands.SelectedCommit, custom_commands.SelectedCommit,
custom_commands.SelectedCommitRange, custom_commands.SelectedCommitRange,
custom_commands.SelectedPath, custom_commands.SelectedPath,
custom_commands.SelectedSubmodule,
custom_commands.ShowOutputInPanel, custom_commands.ShowOutputInPanel,
custom_commands.SuggestionsCommand, custom_commands.SuggestionsCommand,
custom_commands.SuggestionsPreset, custom_commands.SuggestionsPreset,