Skip to content
This repository has been archived by the owner on May 24, 2019. It is now read-only.

Unified table output #14

Open
root360-AndreasUlm opened this issue Apr 16, 2019 · 5 comments
Open

Unified table output #14

root360-AndreasUlm opened this issue Apr 16, 2019 · 5 comments
Labels
enhancement New feature or request

Comments

@root360-AndreasUlm
Copy link
Contributor

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

@lunny lunny added the enhancement New feature or request label Apr 16, 2019
@root360-AndreasUlm
Copy link
Contributor Author

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?

@lunny
Copy link
Member

lunny commented Apr 25, 2019

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

@noerw
Copy link
Member

noerw commented Apr 25, 2019

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)

@root360-AndreasUlm
Copy link
Contributor Author

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

root360-AndreasUlm added a commit to root360-AndreasUlm/tea that referenced this issue Apr 28, 2019
Signed-off-by: Andreas Ulm <andreas.ulm@root360.de>
@root360-AndreasUlm
Copy link
Contributor Author

@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

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants