github.com/turbot/steampipe@v1.7.0-rc.0.0.20240517123944-7cef272d4458/pkg/interactive/metaquery/completers.go (about) 1 package metaquery 2 3 import ( 4 "strings" 5 6 "github.com/c-bata/go-prompt" 7 ) 8 9 // CompleterInput is a struct defining input data for the metaquery completer 10 type CompleterInput struct { 11 Query string 12 TableSuggestions []prompt.Suggest 13 } 14 15 type completer func(input *CompleterInput) []prompt.Suggest 16 17 // Complete returns completions for metaqueries. 18 func Complete(input *CompleterInput) []prompt.Suggest { 19 input.Query = strings.TrimSuffix(input.Query, ";") 20 cmd, _ := getCmdAndArgs(input.Query) 21 22 metaQueryObj, found := metaQueryDefinitions[cmd] 23 if !found { 24 return []prompt.Suggest{} 25 } 26 if metaQueryObj.completer == nil { 27 return []prompt.Suggest{} 28 } 29 return metaQueryObj.completer(input) 30 } 31 32 func completerFromArgsOf(cmd string) completer { 33 return func(input *CompleterInput) []prompt.Suggest { 34 metaQueryDefinition := metaQueryDefinitions[cmd] 35 suggestions := make([]prompt.Suggest, len(metaQueryDefinition.args)) 36 for idx, arg := range metaQueryDefinition.args { 37 suggestions[idx] = prompt.Suggest{Text: arg.value, Description: arg.description, Output: arg.value} 38 } 39 return suggestions 40 } 41 } 42 43 func inspectCompleter(input *CompleterInput) []prompt.Suggest { 44 return input.TableSuggestions 45 }