canonical / craft-application

The basis for *craft applications
https://canonical-craft-application.readthedocs-hosted.com/en/latest
GNU Lesser General Public License v3.0
5 stars 6 forks source link

Utility to allow a `format` option for commands. #342

Open lengau opened 1 month ago

lengau commented 1 month ago

What needs to get done

Add utilities of some form to make it easy for commands to add a unified format option for various tabular command outputs.

Ideally a command's fill_parser method would be able to do something like:

utils.add_format_argument(parser)

and then we'd have a related function that actually emits the formatted message, something like:

def emit_formatted_output(format: FormatValue, headers: Sequence[str], data) -> None:
    ...

Here the data object would need to be something that can (at minimum) be used by tabulate and be serialised into JSON. With those two formats, we'd likely get the ability to do other formats (e.g. YAML, toml) if we decide to add that in the future.

Why it needs to get done

This got added to the names command in snapcraft recently: https://github.com/canonical/snapcraft/pull/4778 Charmcraft has a partial implementation, but still relies on the command itself being aware of each format.

syncronize-issues-to-jira[bot] commented 1 month ago

Thank you for reporting us your feedback!

The internal ticket has been created: https://warthogs.atlassian.net/browse/CRAFT-2908.

This message was autogenerated