Files
steampipe/pkg/interactive/metaquery/handler_help.go
kaidaguerre 40804a3201 Execute RefreshConnections asyncronously and optimise for high connection count. Add connection_state table.
- Execute RefreshConnections asyncronously
- Add connection_state table to indicate the loading state of connections
- Optimise RefreshConnections by cloning connection schemas
- Add locking to ensure only a single instance of RefreshConnections runs
- Start executing queries without waiting for connections to load, add smart error handling to wait for required connection
- Optimise autocomplete for high connection count
- Autocomplete and inspect data available before all conections are refreshed
- Update file watcher to respond to CHMOD, so thaat it pickes up deletion of file contents

 Closes #3394
 Closes #3267
2023-05-10 09:05:08 +01:00

56 lines
1.6 KiB
Go

package metaquery
import (
"context"
"fmt"
"sort"
"strings"
"github.com/turbot/go-kit/helpers"
"github.com/turbot/steampipe/pkg/constants"
)
// .help
func doHelp(_ context.Context, _ *HandlerInput) error {
var commonCmds = []string{constants.CmdHelp, constants.CmdInspect, constants.CmdExit}
commonCmdRows := getMetaQueryHelpRows(commonCmds, false)
var advanceCmds []string
for cmd := range metaQueryDefinitions {
if !helpers.StringSliceContains(commonCmds, cmd) {
advanceCmds = append(advanceCmds, cmd)
}
}
advanceCmdRows := getMetaQueryHelpRows(advanceCmds, true)
// print out
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",
buildTable(commonCmdRows, true),
buildTable(advanceCmdRows, true),
constants.Bold("https://steampipe.io/docs"))
fmt.Println()
return nil
}
func getMetaQueryHelpRows(cmds []string, arrange bool) [][]string {
var rows [][]string
for _, cmd := range cmds {
metaQuery := metaQueryDefinitions[cmd]
var argsStr []string
if len(metaQuery.args) > 2 {
rows = append(rows, []string{cmd + " " + "[mode]", metaQuery.description})
} else {
for _, v := range metaQuery.args {
argsStr = append(argsStr, v.value)
}
rows = append(rows, []string{cmd + " " + strings.Join(argsStr, "|"), metaQuery.description})
}
}
// sort by metacmds name
if arrange {
sort.SliceStable(rows, func(i, j int) bool {
return rows[i][0] < rows[j][0]
})
}
return rows
}