diff --git a/pkg/cmd/api/api.go b/pkg/cmd/api/api.go index 98b237915..05718458f 100644 --- a/pkg/cmd/api/api.go +++ b/pkg/cmd/api/api.go @@ -98,9 +98,10 @@ func NewCmdApi(f *cmdutil.Factory, runF func(*ApiOptions) error) *cobra.Command original query accepts an %[1]s$endCursor: String%[1]s variable and that it fetches the %[1]spageInfo{ hasNextPage, endCursor }%[1]s set of fields from a collection. - The %[1]s--filter%[1]s option accepts a query in jq syntax and will print only the resulting - values that match the query. This is equivalent to piping the output to %[1]sjq -r%[1]s. - To learn more about the query syntax, see: https://stedolan.github.io/jq/manual/v1.6/ + The %[1]s--jq%[1]s option accepts a query in jq syntax and will print only the resulting + values that match the query. This is equivalent to piping the output to %[1]sjq -r%[1]s, + but does not require the jq utility to be installed on the system. To learn more + about the query syntax, see: https://stedolan.github.io/jq/manual/v1.6/ With %[1]s--template%[1]s, the provided Go template is rendered using the JSON data as input. For the syntax of Go templates, see: https://golang.org/pkg/text/template/ @@ -209,7 +210,7 @@ func NewCmdApi(f *cmdutil.Factory, runF func(*ApiOptions) error) *cobra.Command cmd.Flags().StringVar(&opts.RequestInputFile, "input", "", "The `file` to use as body for the HTTP request") cmd.Flags().BoolVar(&opts.Silent, "silent", false, "Do not print the response body") cmd.Flags().StringVarP(&opts.Template, "template", "t", "", "Format the response using a Go template") - cmd.Flags().StringVar(&opts.FilterOutput, "filter", "", "Filter fields from the response using jq syntax") + cmd.Flags().StringVarP(&opts.FilterOutput, "jq", "q", "", "Query to select values from the response using jq syntax") cmd.Flags().DurationVar(&opts.CacheTTL, "cache", 0, "Cache the response, e.g. \"3600s\", \"60m\", \"1h\"") return cmd } diff --git a/pkg/cmd/api/api_test.go b/pkg/cmd/api/api_test.go index 3b2acb6cf..4f65fe8f8 100644 --- a/pkg/cmd/api/api_test.go +++ b/pkg/cmd/api/api_test.go @@ -48,6 +48,7 @@ func Test_NewCmdApi(t *testing.T) { Silent: false, CacheTTL: 0, Template: "", + FilterOutput: "", }, wantsErr: false, }, @@ -68,6 +69,7 @@ func Test_NewCmdApi(t *testing.T) { Silent: false, CacheTTL: 0, Template: "", + FilterOutput: "", }, wantsErr: false, }, @@ -88,6 +90,7 @@ func Test_NewCmdApi(t *testing.T) { Silent: false, CacheTTL: 0, Template: "", + FilterOutput: "", }, wantsErr: false, }, @@ -108,6 +111,7 @@ func Test_NewCmdApi(t *testing.T) { Silent: false, CacheTTL: 0, Template: "", + FilterOutput: "", }, wantsErr: false, }, @@ -128,6 +132,7 @@ func Test_NewCmdApi(t *testing.T) { Silent: false, CacheTTL: 0, Template: "", + FilterOutput: "", }, wantsErr: false, }, @@ -148,6 +153,7 @@ func Test_NewCmdApi(t *testing.T) { Silent: true, CacheTTL: 0, Template: "", + FilterOutput: "", }, wantsErr: false, }, @@ -173,6 +179,7 @@ func Test_NewCmdApi(t *testing.T) { Silent: false, CacheTTL: 0, Template: "", + FilterOutput: "", }, wantsErr: false, }, @@ -198,6 +205,7 @@ func Test_NewCmdApi(t *testing.T) { Silent: false, CacheTTL: 0, Template: "", + FilterOutput: "", }, wantsErr: false, }, @@ -223,6 +231,7 @@ func Test_NewCmdApi(t *testing.T) { Silent: false, CacheTTL: 0, Template: "", + FilterOutput: "", }, wantsErr: false, }, @@ -243,6 +252,7 @@ func Test_NewCmdApi(t *testing.T) { Silent: false, CacheTTL: time.Minute * 5, Template: "", + FilterOutput: "", }, wantsErr: false, }, @@ -263,6 +273,28 @@ func Test_NewCmdApi(t *testing.T) { Silent: false, CacheTTL: 0, Template: "hello {{.name}}", + FilterOutput: "", + }, + wantsErr: false, + }, + { + name: "with jq filter", + cli: "user -q .name", + wants: ApiOptions{ + Hostname: "", + RequestMethod: "GET", + RequestMethodPassed: false, + RequestPath: "user", + RequestInputFile: "", + RawFields: []string(nil), + MagicFields: []string(nil), + RequestHeaders: []string(nil), + ShowResponseHeaders: false, + Paginate: false, + Silent: false, + CacheTTL: 0, + Template: "", + FilterOutput: ".name", }, wantsErr: false, }, @@ -301,6 +333,7 @@ func Test_NewCmdApi(t *testing.T) { assert.Equal(t, tt.wants.Silent, opts.Silent) assert.Equal(t, tt.wants.CacheTTL, opts.CacheTTL) assert.Equal(t, tt.wants.Template, opts.Template) + assert.Equal(t, tt.wants.FilterOutput, opts.FilterOutput) }) } }