add support for human readable /_cat endpoints: 'api repl -H'

This commit is contained in:
2026-07-10 11:11:49 +02:00
parent 45ba38bda9
commit 34669ac4de
3 changed files with 36 additions and 20 deletions

View File

@@ -91,6 +91,12 @@ func ApiRepl(conf *cfg.Config) *cli.Command {
Aliases: []string{"p"}, Aliases: []string{"p"},
Sources: cli.EnvVars("PAGER", "ES_JSON_PAGER"), Sources: cli.EnvVars("PAGER", "ES_JSON_PAGER"),
}, },
&cli.BoolFlag{
Name: "human-readable-cat",
Usage: "enable human readable /_cat output",
Destination: &conf.HumanCat,
Aliases: []string{"H"},
},
}, },
Action: func(ctx context.Context, cmd *cli.Command) error { Action: func(ctx context.Context, cmd *cli.Command) error {

View File

@@ -101,7 +101,8 @@ type Config struct {
MaxDocs, MaxShardSize, MaxShardDocs int // roll over MaxDocs, MaxShardSize, MaxShardDocs int // roll over
DryRun bool // rollover: -n DryRun bool // rollover: -n
Tag string // api ls: -t Tag string // api ls: -t
HumanCat bool // api repl: -H
Ilm Ilm // ilm create Ilm Ilm // ilm create

View File

@@ -45,22 +45,25 @@ import (
) )
const ( const (
intro = `Input format: verb path [data]" intro = `# Input format: verb path [data]"
#
Example: # Example:
#
post /yourindex/_ccr/pause_follow # post /yourindex/_ccr/pause_follow
put /yourindex/_settings {"number_of_replicas": 1} # put /yourindex/_settings {"number_of_replicas": 1}
#
You can also put multiline JSON after the path like: # You can also put multiline JSON after the path like:
#
put /yourindex/_settings # put /yourindex/_settings
{ # {
"number_of_replicas": 1 # "number_of_replicas": 1
} # }
#
If you do NOT supply a JSON in the first line, you need to hit ENTER # If you do NOT supply a JSON in the first line, you need to hit ENTER
twice to complete.` # twice to complete.
#
# Supply the flag --human-readable-cat, -H to view /_cat API calls in
# human readable form.`
) )
// holds an API operation via go-openapi/spec // holds an API operation via go-openapi/spec
@@ -143,7 +146,11 @@ func ApiRepl(conf *cfg.Config) error {
fmt.Printf("failed to call API: %s\n", esErrorString(err)) fmt.Printf("failed to call API: %s\n", esErrorString(err))
} }
pageJsonOutput(conf, raw) if conf.HumanCat && strings.HasPrefix(parts[1], "/_cat") {
fmt.Println(string(raw))
} else {
pageJsonOutput(conf, raw)
}
} }
//nolint:nilerr //nolint:nilerr
@@ -216,8 +223,10 @@ func CallAPI(conf *cfg.Config, verb, path, data string) ([]byte, error) {
return nil, err return nil, err
} }
req.Header.Add("Content-Type", "application/json") if !conf.HumanCat && strings.HasPrefix(path, "/_cat") {
req.Header.Add("Accept", "application/json") req.Header.Add("Content-Type", "application/json")
req.Header.Add("Accept", "application/json")
}
// make sure we have got all we need // make sure we have got all we need
if err := conf.DefaultCluster.CheckAuth(); err != nil { if err := conf.DefaultCluster.CheckAuth(); err != nil {