Skip to content

Commit 19df238

Browse files
committed
feat: allow OSCommand.Quote to be invoked within a custom command
1 parent 092363a commit 19df238

File tree

4 files changed

+9
-21
lines changed

4 files changed

+9
-21
lines changed

docs/Custom_Command_Keybindings.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ customCommands:
88
command: 'hub browse -- "commit/{{.SelectedLocalCommit.Sha}}"'
99
context: 'commits'
1010
- key: 'a'
11-
command: "git {{if .SelectedFile.HasUnstagedChanges}} add {{else}} reset {{end}} {{.SelectedFile.Name}}"
11+
command: "git {{if .SelectedFile.HasUnstagedChanges}} add {{else}} reset {{end}} {{.SelectedFile.Name | Quote}}"
1212
context: 'files'
1313
description: 'toggle file staged'
1414
- key: 'C'

pkg/gui/services/custom_commands/handler_creator.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package custom_commands
22

33
import (
44
"strings"
5+
"text/template"
56

67
"github.com/jesseduffield/generics/slices"
78
"github.com/jesseduffield/lazygit/pkg/commands"
@@ -166,7 +167,11 @@ func (self *HandlerCreator) getResolveTemplateFn(form map[string]string, promptR
166167
Form: form,
167168
}
168169

169-
return func(templateStr string) (string, error) { return utils.ResolveTemplate(templateStr, objects) }
170+
funcs := template.FuncMap{
171+
"Quote": self.os.Quote,
172+
}
173+
174+
return func(templateStr string) (string, error) { return utils.ResolveTemplate(templateStr, objects, funcs) }
170175
}
171176

172177
func (self *HandlerCreator) finalHandler(customCommand config.CustomCommand, sessionState *SessionState, promptResponses []string, form map[string]string) error {

pkg/gui/services/custom_commands/resolver.go

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
package custom_commands
22

33
import (
4-
"bytes"
5-
"text/template"
6-
74
"github.com/jesseduffield/lazygit/pkg/common"
85
"github.com/jesseduffield/lazygit/pkg/config"
96
)
@@ -110,17 +107,3 @@ type CustomCommandObject struct {
110107
PromptResponses []string
111108
Form map[string]string
112109
}
113-
114-
func ResolveTemplate(templateStr string, object interface{}) (string, error) {
115-
tmpl, err := template.New("template").Parse(templateStr)
116-
if err != nil {
117-
return "", err
118-
}
119-
120-
var buf bytes.Buffer
121-
if err := tmpl.Execute(&buf, object); err != nil {
122-
return "", err
123-
}
124-
125-
return buf.String(), nil
126-
}

pkg/utils/template.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import (
66
"text/template"
77
)
88

9-
func ResolveTemplate(templateStr string, object interface{}) (string, error) {
10-
tmpl, err := template.New("template").Option("missingkey=error").Parse(templateStr)
9+
func ResolveTemplate(templateStr string, object interface{}, funcs template.FuncMap) (string, error) {
10+
tmpl, err := template.New("template").Funcs(funcs).Option("missingkey=error").Parse(templateStr)
1111
if err != nil {
1212
return "", err
1313
}

0 commit comments

Comments
 (0)