github.com/turbot/steampipe@v1.7.0-rc.0.0.20240517123944-7cef272d4458/pkg/interactive/metaquery/definitions.go (about) 1 package metaquery 2 3 import ( 4 "github.com/turbot/steampipe/pkg/constants" 5 ) 6 7 type metaQueryArg struct { 8 value string 9 description string 10 } 11 12 type metaQueryDefinition struct { 13 title string 14 description string 15 args []metaQueryArg 16 handler handler 17 validator validator 18 completer completer 19 } 20 21 var metaQueryDefinitions map[string]metaQueryDefinition 22 23 func init() { 24 metaQueryDefinitions = map[string]metaQueryDefinition{ 25 constants.CmdHelp: { 26 title: constants.CmdHelp, 27 handler: doHelp, 28 validator: noArgs, 29 description: "Show steampipe help", 30 }, 31 constants.CmdExit: { 32 title: constants.CmdExit, 33 handler: doExit, 34 validator: noArgs, 35 description: "Exit from steampipe terminal", 36 }, 37 constants.CmdQuit: { 38 title: constants.CmdQuit, 39 handler: doExit, 40 validator: noArgs, 41 description: "Exit from steampipe terminal", 42 }, 43 constants.CmdTableList: { 44 title: constants.CmdTableList, 45 handler: listTables, 46 validator: atMostNArgs(1), 47 description: "List or describe tables", 48 }, 49 constants.CmdSeparator: { 50 title: constants.CmdSeparator, 51 handler: setViperConfigFromArg(constants.ArgSeparator), 52 validator: exactlyNArgs(1), 53 description: "Set csv output separator", 54 }, 55 constants.CmdHeaders: { 56 title: "headers", 57 handler: setHeader, 58 validator: booleanValidator(constants.CmdHeaders, validatorFromArgsOf(constants.CmdHeaders)), 59 description: "Enable or disable column headers", 60 args: []metaQueryArg{ 61 {value: constants.ArgOn, description: "Turn on headers in output"}, 62 {value: constants.ArgOff, description: "Turn off headers in output"}, 63 }, 64 completer: completerFromArgsOf(constants.CmdHeaders), 65 }, 66 constants.CmdMulti: { 67 title: "multi-line", 68 handler: setMultiLine, 69 validator: booleanValidator(constants.CmdMulti, validatorFromArgsOf(constants.CmdMulti)), 70 description: "Enable or disable multiline mode", 71 args: []metaQueryArg{ 72 {value: constants.ArgOn, description: "Turn on multiline mode"}, 73 {value: constants.ArgOff, description: "Turn off multiline mode"}, 74 }, 75 completer: completerFromArgsOf(constants.CmdMulti), 76 }, 77 constants.CmdTiming: { 78 title: "timing", 79 handler: setTiming, 80 validator: validatorFromArgsOf(constants.CmdTiming), 81 description: "Enable or disable query execution timing", 82 args: []metaQueryArg{ 83 {value: constants.ArgOff, description: "Turn off query timer"}, 84 {value: constants.ArgOn, description: "Display time elapsed after every query"}, 85 {value: constants.ArgVerbose, description: "Display time elapsed and details of each scan"}, 86 }, 87 completer: completerFromArgsOf(constants.CmdTiming), 88 }, 89 constants.CmdOutput: { 90 title: constants.CmdOutput, 91 handler: setViperConfigFromArg(constants.ArgOutput), 92 validator: composeValidator(exactlyNArgs(1), validatorFromArgsOf(constants.CmdOutput)), 93 description: "Set output format: csv, json, table or line", 94 args: []metaQueryArg{ 95 {value: constants.OutputFormatJSON, description: "Set output to JSON"}, 96 {value: constants.OutputFormatCSV, description: "Set output to CSV"}, 97 {value: constants.OutputFormatTable, description: "Set output to Table"}, 98 {value: constants.OutputFormatLine, description: "Set output to Line"}, 99 }, 100 completer: completerFromArgsOf(constants.CmdOutput), 101 }, 102 constants.CmdCache: { 103 title: constants.CmdCache, 104 handler: cacheControl, 105 validator: validatorFromArgsOf(constants.CmdCache), 106 description: "Enable, disable or clear the query cache", 107 args: []metaQueryArg{ 108 {value: constants.ArgOn, description: "Turn on caching"}, 109 {value: constants.ArgOff, description: "Turn off caching"}, 110 {value: constants.ArgClear, description: "Clear the cache"}, 111 }, 112 completer: completerFromArgsOf(constants.CmdCache), 113 }, 114 constants.CmdCacheTtl: { 115 title: constants.CmdCacheTtl, 116 handler: cacheTTL, 117 validator: atMostNArgs(1), 118 description: "Set the cache ttl (time-to-live)", 119 }, 120 constants.CmdInspect: { 121 title: constants.CmdInspect, 122 handler: inspect, 123 // .inspect only supports a single arg, however the arg validation code cannot understand escaped arguments 124 // e.g. it will treat csv."my table" as 2 args 125 // the logic to handle this escaping is lower down so we just validate to ensure at least one argument has been provided 126 validator: atLeastNArgs(0), 127 description: "View connections, tables & column information", 128 completer: inspectCompleter, 129 }, 130 constants.CmdConnections: { 131 title: constants.CmdConnections, 132 handler: listConnections, 133 validator: noArgs, 134 description: "List active connections", 135 }, 136 constants.CmdClear: { 137 title: constants.CmdClear, 138 handler: clearScreen, 139 validator: noArgs, 140 description: "Clear the console", 141 }, 142 constants.CmdSearchPath: { 143 title: constants.CmdSearchPath, 144 handler: setOrGetSearchPath, 145 validator: atMostNArgs(1), 146 description: "Display the current search path, or set the search-path by passing in a comma-separated list", 147 }, 148 constants.CmdSearchPathPrefix: { 149 title: constants.CmdSearchPathPrefix, 150 handler: setSearchPathPrefix, 151 validator: exactlyNArgs(1), 152 description: "Set a prefix to the current search-path", 153 }, 154 constants.CmdAutoComplete: { 155 title: "auto-complete", 156 handler: setAutoComplete, 157 validator: booleanValidator(constants.CmdAutoComplete, validatorFromArgsOf(constants.CmdAutoComplete)), 158 description: "Enable or disable auto-completion", 159 args: []metaQueryArg{ 160 {value: constants.ArgOn, description: "Turn on auto-completion"}, 161 {value: constants.ArgOff, description: "Turn off auto-completion"}, 162 }, 163 completer: completerFromArgsOf(constants.CmdAutoComplete), 164 }, 165 } 166 }