mirror of
https://github.com/turbot/steampipe.git
synced 2025-12-19 09:58:53 -05:00
57 lines
1.6 KiB
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
|
|
}
|