github.com/turbot/steampipe@v1.7.0-rc.0.0.20240517123944-7cef272d4458/pkg/interactive/metaquery/handler_help.go (about) 1 package metaquery 2 3 import ( 4 "context" 5 "fmt" 6 "sort" 7 "strings" 8 9 "github.com/turbot/go-kit/helpers" 10 "github.com/turbot/steampipe/pkg/constants" 11 ) 12 13 // .help 14 func doHelp(_ context.Context, _ *HandlerInput) error { 15 var commonCmds = []string{constants.CmdHelp, constants.CmdInspect, constants.CmdExit} 16 17 commonCmdRows := getMetaQueryHelpRows(commonCmds, false) 18 var advanceCmds []string 19 for cmd := range metaQueryDefinitions { 20 if !helpers.StringSliceContains(commonCmds, cmd) { 21 advanceCmds = append(advanceCmds, cmd) 22 } 23 } 24 advanceCmdRows := getMetaQueryHelpRows(advanceCmds, true) 25 // print out 26 fmt.Printf("Welcome to Steampipe shell.\n\nTo start, simply enter your SQL query at the prompt:\n\n select * from aws_iam_user\n\nCommon commands:\n\n%s\n\nAdvanced commands:\n\n%s\n\nDocumentation available at %s\n", 27 buildTable(commonCmdRows, true), 28 buildTable(advanceCmdRows, true), 29 constants.Bold("https://steampipe.io/docs")) 30 fmt.Println() 31 return nil 32 } 33 34 func getMetaQueryHelpRows(cmds []string, arrange bool) [][]string { 35 var rows [][]string 36 for _, cmd := range cmds { 37 metaQuery := metaQueryDefinitions[cmd] 38 var argsStr []string 39 if len(metaQuery.args) > 2 { 40 rows = append(rows, []string{cmd + " " + "[mode]", metaQuery.description}) 41 } else { 42 for _, v := range metaQuery.args { 43 argsStr = append(argsStr, v.value) 44 } 45 rows = append(rows, []string{cmd + " " + strings.Join(argsStr, "|"), metaQuery.description}) 46 } 47 } 48 // sort by metacmds name 49 if arrange { 50 sort.SliceStable(rows, func(i, j int) bool { 51 return rows[i][0] < rows[j][0] 52 }) 53 } 54 return rows 55 }