diff --git a/README.md b/README.md index 12fbf66..6a2df64 100644 --- a/README.md +++ b/README.md @@ -206,6 +206,12 @@ pda ls --format csv # dogs,four legged mammals,no expiry # Or TSV, or Markdown, or HTML. + +# Just the count of entries. +pda ls --count +# 2 +pda ls --count --key "d*" +# 1 ```

diff --git a/cmd/list.go b/cmd/list.go index 348879d..0cebe64 100644 --- a/cmd/list.go +++ b/cmd/list.go @@ -58,6 +58,7 @@ func (e *formatEnum) Type() string { return "format" } var ( listBase64 bool + listCount bool listNoKeys bool listNoValues bool listNoTTL bool @@ -161,6 +162,11 @@ func list(cmd *cobra.Command, args []string) error { } } + if listCount { + fmt.Fprintln(cmd.OutOrStdout(), len(filtered)) + return nil + } + if (len(matchers) > 0 || len(valueMatchers) > 0) && len(filtered) == 0 { switch { case len(matchers) > 0 && len(valueMatchers) > 0: @@ -473,6 +479,7 @@ func renderTable(tw table.Writer) { func init() { listCmd.Flags().BoolVarP(&listBase64, "base64", "b", false, "view binary data as base64") + listCmd.Flags().BoolVarP(&listCount, "count", "c", false, "print only the count of matching entries") listCmd.Flags().BoolVar(&listNoKeys, "no-keys", false, "suppress the key column") listCmd.Flags().BoolVar(&listNoValues, "no-values", false, "suppress the value column") listCmd.Flags().BoolVar(&listNoTTL, "no-ttl", false, "suppress the TTL column") diff --git a/testdata/help-list.ct b/testdata/help-list.ct index 5e817c7..ce888b0 100644 --- a/testdata/help-list.ct +++ b/testdata/help-list.ct @@ -10,6 +10,7 @@ Aliases: Flags: -b, --base64 view binary data as base64 + -c, --count print only the count of matching entries -o, --format format output format (table|tsv|csv|markdown|html|ndjson) (default table) -f, --full show full values without truncation -h, --help help for list @@ -29,6 +30,7 @@ Aliases: Flags: -b, --base64 view binary data as base64 + -c, --count print only the count of matching entries -o, --format format output format (table|tsv|csv|markdown|html|ndjson) (default table) -f, --full show full values without truncation -h, --help help for list diff --git a/testdata/list-count.ct b/testdata/list-count.ct new file mode 100644 index 0000000..988bdd9 --- /dev/null +++ b/testdata/list-count.ct @@ -0,0 +1,9 @@ +$ pda set a@lc val-a +$ pda set b@lc val-b +$ pda set c@lc val-c +$ pda ls lc --count +3 +$ pda ls lc --count --key "a*" +1 +$ pda ls lc --count --key "z*" +0