From 2c7dd0cd901aba53f7fef3705ed242ac3850fe16 Mon Sep 17 00:00:00 2001 From: Matěj Cepl Date: Sat, 17 Feb 2024 21:21:37 +0100 Subject: Don't crash on epy -r when stdout is filtered and interrupted. E.g., epy -r|head threw ugly traceback completely unnecessarily. --- src/epy_reader/cli.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/epy_reader/cli.py b/src/epy_reader/cli.py index e43b51c..e604b8f 100644 --- a/src/epy_reader/cli.py +++ b/src/epy_reader/cli.py @@ -69,12 +69,16 @@ def print_reading_history(state: State) -> None: dig = len(str(len(library_items) + 1)) tcols = termc - dig - 2 for n, item in enumerate(library_items): - print( - "{} {}".format( - str(n + 1).rjust(dig), - truncate(str(item), "...", tcols, tcols - 3), + try: + print( + "{} {}".format( + str(n + 1).rjust(dig), + truncate(str(item), "...", tcols, tcols - 3), + ) ) - ) + except BrokenPipeError: + # Happens when output of epy is filtered through some pipe, e.g. head + break def parse_cli_args() -> argparse.Namespace: -- cgit