Files
steampipe/pkg/interactive/metaquery/handler_help.go

57 lines
1.6 KiB
Go

package metaquery
import (
"context"
"fmt"
"slices"
"sort"
"strings"
pconstants "github.com/turbot/pipe-fittings/v2/constants"
"github.com/turbot/steampipe/v2/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 !slices.Contains(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),
pconstants.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
}