From 1dc45c8dc75df39e4a876c7f1dfb18ab6fc94e9a Mon Sep 17 00:00:00 2001 From: gmega Date: Tue, 14 Nov 2023 17:56:54 -0300 Subject: [PATCH] make table output adapt to terminal width --- logtools/cli/es_logs.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/logtools/cli/es_logs.py b/logtools/cli/es_logs.py index 5ec2dea..2ed0abe 100644 --- a/logtools/cli/es_logs.py +++ b/logtools/cli/es_logs.py @@ -1,4 +1,6 @@ +import math import os +import textwrap from argparse import ArgumentParser from enum import Enum from typing import List, Iterable @@ -26,11 +28,15 @@ GETTERS = { def format_table(objects: List) -> str: tbl = PrettyTable() + wrapper = None for obj in objects: if not tbl.field_names: tbl.field_names = obj.__annotations__.keys() - tbl.add_row([_format_field(getattr(obj, field)) for field in tbl.field_names]) + wrapper = textwrap.TextWrapper(width=math.ceil(os.get_terminal_size().columns / len(tbl.field_names)), + break_long_words=False) + + tbl.add_row([wrapper.fill(_format_field(getattr(obj, field))) for field in tbl.field_names]) return tbl.get_string()