From: garciadeblas Date: Wed, 19 Jun 2024 16:29:50 +0000 (+0200) Subject: Enable print_output common function to print json and yaml from python dict or list X-Git-Tag: release-v16.0-start~4 X-Git-Url: https://osm.etsi.org/gitweb/?a=commitdiff_plain;h=refs%2Fchanges%2F42%2F14442%2F2;p=osm%2Fosmclient.git Enable print_output common function to print json and yaml from python dict or list Change-Id: Iaab535c2e9e6361fbb2cf629031323ebd5c5293e Signed-off-by: garciadeblas --- diff --git a/osmclient/common/print_output.py b/osmclient/common/print_output.py index a9364c8..3d72205 100644 --- a/osmclient/common/print_output.py +++ b/osmclient/common/print_output.py @@ -53,7 +53,16 @@ literal_option = click.option( ) -def print_output(format, headers, rows): +def print_output(format="table", headers=["field", "value"], rows=[], data=None): + """ + Prints content in specified format. + :param format: output format (table, yaml, json, csv, jsonpath=...). Default: + :param headers: headers of the content + :param rows: rows of the content + :param data: dictionary or list with the content to be printed. Only applies to yaml, json or jsonpath format. + If specified, headers and rows are ignored, and json/yaml/jsonpath output is generated directly from data. + """ + logger.debug("") if format == "table": table = PrettyTable(headers) @@ -67,12 +76,13 @@ def print_output(format, headers, rows): table.add_row(row) print(table.get_csv_string()) elif format == "json" or format == "yaml" or format.startswith("jsonpath="): - data = [] - for row in rows: - item = {} - for i in range(len(row)): - item[headers[i]] = row[i] - data.append(item) + if not data: + data = [] + for row in rows: + item = {} + for i in range(len(row)): + item[headers[i]] = row[i] + data.append(item) if format == "json": print(json.dumps(data, indent=4)) elif format == "yaml":