diff options
author | Mihai22125 <mihai.mtb10@gmail.com> | 2022-08-09 19:52:19 +0300 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2022-09-17 14:58:44 -0700 |
commit | 7e9dffe1b93d304d8500cc0a379a8a2f4e35a7a2 (patch) | |
tree | 0d9aa025c979edf1289ad653829f2ef7f367134a /pkg/gui/services | |
parent | c81333fefe2f1e27ab2fcb6a0dc37d82ca47c711 (diff) |
Add Key field to CustomCommandPrompt struct
Add Form field to CustomCommandObjects struct
Write user prompts responses to Form field
Ensure that map keys exists
Add form prompts integration test
Remove redundant index
Diffstat (limited to 'pkg/gui/services')
-rw-r--r-- | pkg/gui/services/custom_commands/handler_creator.go | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/pkg/gui/services/custom_commands/handler_creator.go b/pkg/gui/services/custom_commands/handler_creator.go index 6ac9fb733..839f70adf 100644 --- a/pkg/gui/services/custom_commands/handler_creator.go +++ b/pkg/gui/services/custom_commands/handler_creator.go @@ -45,8 +45,9 @@ func (self *HandlerCreator) call(customCommand config.CustomCommand) func() erro return func() error { sessionState := self.sessionStateLoader.call() promptResponses := make([]string, len(customCommand.Prompts)) + form := make(map[string]string) - f := func() error { return self.finalHandler(customCommand, sessionState, promptResponses) } + f := func() error { return self.finalHandler(customCommand, sessionState, promptResponses, form) } // if we have prompts we'll recursively wrap our confirm handlers with more prompts // until we reach the actual command @@ -60,10 +61,11 @@ func (self *HandlerCreator) call(customCommand config.CustomCommand) func() erro wrappedF := func(response string) error { promptResponses[idx] = response + form[prompt.Key] = response return g() } - resolveTemplate := self.getResolveTemplateFn(promptResponses, sessionState) + resolveTemplate := self.getResolveTemplateFn(form, promptResponses, sessionState) resolvedPrompt, err := self.resolver.resolvePrompt(&prompt, resolveTemplate) if err != nil { return self.c.Error(err) @@ -154,19 +156,21 @@ func (self *HandlerCreator) menuPromptFromCommand(prompt *config.CustomCommandPr type CustomCommandObjects struct { *SessionState PromptResponses []string + Form map[string]string } -func (self *HandlerCreator) getResolveTemplateFn(promptResponses []string, sessionState *SessionState) func(string) (string, error) { +func (self *HandlerCreator) getResolveTemplateFn(form map[string]string, promptResponses []string, sessionState *SessionState) func(string) (string, error) { objects := CustomCommandObjects{ SessionState: sessionState, PromptResponses: promptResponses, + Form: form, } return func(templateStr string) (string, error) { return utils.ResolveTemplate(templateStr, objects) } } -func (self *HandlerCreator) finalHandler(customCommand config.CustomCommand, sessionState *SessionState, promptResponses []string) error { - resolveTemplate := self.getResolveTemplateFn(promptResponses, sessionState) +func (self *HandlerCreator) finalHandler(customCommand config.CustomCommand, sessionState *SessionState, promptResponses []string, form map[string]string) error { + resolveTemplate := self.getResolveTemplateFn(form, promptResponses, sessionState) cmdStr, err := resolveTemplate(customCommand.Command) if err != nil { return self.c.Error(err) |