hubcio opened a new issue, #4445:
URL: https://github.com/apache/iggy/issues/4445

   ## Problem
   
   - Only `iggy stats` can print JSON or TOML (`-o json|toml`, 
`core/cli/src/commands/binary_system/stats.rs:243-244`). All other get and list 
commands print tables, and the list commands use another flag, `-l, --list-mode 
table|list`. #749 asked for JSON output in 2024 and was closed after `stats` 
only (#756).
   - `iggy message poll` prints a table and converts each payload with 
`String::from_utf8_lossy` 
(`core/cli/src/commands/binary_message/poll_messages.rs:141`). Invalid UTF-8 
prints as U+FFFD, and a payload with `\n` spans two rows. `--output-file` 
writes whole messages, but no option prints the payloads alone.
   - The `Executing ...` line goes to stdout (`core/cli/src/main.rs:428-432`), 
so `iggy stats -o json | jq .` fails. `-q` hides this line, but it also hides 
the output of all commands except `stats` and `pat create`. #772 asked to move 
the logs to stderr.
   
   ## Proposal
   
   - Add `-o, --output <table|list|json>` to every get and list command, and 
keep `-l, --list-mode` for the list commands. Use the JSON shapes of the HTTP 
API, because the server response types already implement `Serialize`.
   - In the context commands, mask passwords and tokens, as `context show` does.
   - Add `--output <table|json|raw>` to `message poll`, with no short form, 
because `-o` is `--offset` there.
     - `json` writes one JSON object per message per line. Write the message ID 
as a string, because JavaScript and many JSON tools round 128-bit numbers.
     - `--payload-encoding <base64|hex|utf8>` sets the payload format, and the 
default is `base64`. `utf8` fails on a payload that is not valid UTF-8.
     - `raw` writes only the payload bytes, each followed by `\n`.
   - In JSON and raw mode, write only the output to stdout.
   
   ## Notes
   
   - TOML cannot hold a top-level array, so the list commands cannot print TOML.
   
   ## Acceptance
   
   - `jq` can parse the output of every get and list command with `-o json`, 
and of `message poll --output json`.
   - For non-empty, single-line UTF-8 payloads, `message poll --output raw | 
message send` sends the same payloads again.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to