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

Unified table output #14

Open
Open
@root360-AndreasUlm

Description

@root360-AndreasUlm
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

Activity

root360-AndreasUlm

root360-AndreasUlm commented on Apr 25, 2019

@root360-AndreasUlm
ContributorAuthor

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

lunny commented on Apr 25, 2019

@lunny
Member

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

noerw

noerw commented on Apr 25, 2019

@noerw
Member

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

root360-AndreasUlm commented on Apr 28, 2019

@root360-AndreasUlm
ContributorAuthor

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

root360-AndreasUlm

root360-AndreasUlm commented on Apr 28, 2019

@root360-AndreasUlm
ContributorAuthor

@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 join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @lunny@noerw@root360-AndreasUlm

        Issue actions

          Unified table output · Issue #14 · go-gitea/tea