Unified table output #14

Closed
opened 2019-04-16 05:19:25 +00:00 by lunny · 6 comments
Owner

Author: @root360-AndreasUlm

Hi,

currently every function printing information handles the output format on its own.
That the format cannot be changed easily e.g. in case '\t' is not available (see discussion in #13) and is not unified.

IMHO a central function for handling output in different formats (e.g. table, JSON) would improve the output of all functions to look unified.
The central output functions could handle the delimiter.

A first idea is to add function to pring table based output which gets a dictionary like this:

header:
  - col1
  - col2
  - col3
values:
- 
  - c1val1
  - c2val1
  - c3val1
- 
  - c1val2
  - c2val2
  - c3val2

With this information the table output function can generate a header and print the values.
As all values to be printed are known at this stage the output can even be vertically aligned.

  1. What do you think about this idea?

Regards,
Andreas

Author: @root360-AndreasUlm Hi, currently every function printing information handles the output format on its own. That the format cannot be changed easily e.g. in case '\t' is not available (see discussion in #13) and is not unified. IMHO a central function for handling output in different formats (e.g. table, JSON) would improve the output of all functions to look unified. The central output functions could handle the delimiter. A first idea is to add function to pring table based output which gets a dictionary like this: ``` header: - col1 - col2 - col3 values: - - c1val1 - c2val1 - c3val1 - - c1val2 - c2val2 - c3val2 ``` With this information the table output function can generate a header and print the values. As all values to be printed are known at this stage the output can even be vertically aligned. 1) What do you think about this idea? Regards, Andreas
Author
Owner

Author: @root360-AndreasUlm

I'm currently implementing the unified output. (https://github.com/root360-AndreasUlm/tea/tree/unified_output_function)
At the moment I'm testing the implementation with all available subcommands.
@lunny When I'm done I'll create PRs for the new functions and every subcommand or should I just create one PR with all changes?

Author: @root360-AndreasUlm I'm currently implementing the unified output. (https://github.com/root360-AndreasUlm/tea/tree/unified_output_function) At the moment I'm testing the implementation with all available subcommands. @lunny When I'm done I'll create PRs for the new functions and every subcommand or should I just create one PR with all changes?
Author
Owner

Author: @lunny

I'm OK. Since the PR title will be unified table output.

Author: @lunny I'm OK. Since the PR title will be unified table output.
Author
Owner

Author: @noerw

IMO, there ideally should be at least one format that is:

  1. easily human readable: grid aligned, always with header
  2. easily human readable & abbreviated: same as 1, but only first X columns, truncated to fit one line
  3. easily machine parseable: CSV/TSV/JSON/YML/..., (in case of CSV never with a header)

That would cover the 3 most common use cases of CLI apps (automation, quick skimming of data, fast access to full data)

Author: @noerw IMO, there ideally should be at least one format that is: 1. easily human readable: grid aligned, always with header 2. easily human readable & abbreviated: same as 1, but only first X columns, truncated to fit one line 3. easily machine parseable: CSV/TSV/JSON/YML/..., (in case of CSV never with a header) That would cover the 3 most common use cases of CLI apps (automation, quick skimming of data, fast access to full data)
Author
Owner

Author: @root360-AndreasUlm

@noerw thanks for the use-cases, I'll implement some of those

Author: @root360-AndreasUlm @noerw thanks for the use-cases, I'll implement some of those
Author
Owner

Author: @root360-AndreasUlm

@lunny finished initial implementation

Out of the cases @noerw mentioned the following are implemented:

  • CSV
  • simple (kind of space-separated values but without headers)
  • table
  • TSV
  • YAML
Author: @root360-AndreasUlm @lunny finished initial implementation Out of the cases @noerw mentioned the following are implemented: - CSV - simple (kind of space-separated values but without headers) - table - TSV - YAML
lunny added the
kind
enhancement
label 2019-06-09 13:41:18 +00:00
lunny added this to the v0.1.0 milestone 2019-06-09 13:41:22 +00:00
Member

@root360-AndreasUlm The formatters are implemented but no command uses them yet, right? At least I can't get the -o flag to affect output.

Edit: found the bug, will send PR

@root360-AndreasUlm The formatters are implemented but no command uses them yet, right? At least I can't get the `-o` flag to affect output. Edit: found the bug, will send PR
6543 closed this issue 2019-10-27 16:19:45 +00:00
Sign in to join this conversation.
No Milestone
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: gitea/tea#14
No description provided.