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  }