summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xscripts/poezio_logs53
1 files changed, 37 insertions, 16 deletions
diff --git a/scripts/poezio_logs b/scripts/poezio_logs
index c97b304f..b2374a6d 100755
--- a/scripts/poezio_logs
+++ b/scripts/poezio_logs
@@ -3,12 +3,11 @@
A simple script to parse and output logs from a poezio logfile
"""
-from poezio.logger import LogInfo, LogMessage, parse_log_line
+import argparse
from functools import singledispatch
+from typing import List, Optional, IO
from poezio import poopt
-import argparse
-import datetime
-import sys
+from poezio.logger import LogInfo, LogMessage, parse_log_line
INFO_COLOR = '\033[35;2m'
NICK_COLOR = '\033[36;2m'
@@ -18,12 +17,17 @@ TIME_COLOR = '\033[33;2m'
SHOW_INFO = True
SHOW_TIME = True
+
@singledispatch
-def print_log(log_object, additional_lines=None):
+def print_log(log_object: LogMessage,
+ additional_lines: Optional[List[str]] = None):
time = log_object.time.strftime('%Y-%m-%d %H:%M:%S')
nick = log_object.nick
- offset = ((poopt.wcswidth(time) +1) if SHOW_TIME else 0) + 2 + poopt.wcswidth(nick)
+ offset = ((
+ (poopt.wcswidth(time) + 1) if SHOW_TIME else 0)
+ + 2 + poopt.wcswidth(nick)
+ )
pad = ' ' * offset
if additional_lines:
@@ -32,17 +36,29 @@ def print_log(log_object, additional_lines=None):
more = ''
if SHOW_TIME:
- print(('%s%s%s %s%s%s> %s\n' % (TIME_COLOR, time, NO_COLOR, NICK_COLOR, nick, NO_COLOR, log_object.text)) + more, end='')
+ print(
+ f'{TIME_COLOR}{time}{NO_COLOR} {NICK_COLOR}{nick}{NO_COLOR}> '
+ f'{log_object.text}\n' + more,
+ end='',
+ )
else:
- print(('%s%s%s> %s\n' % (NICK_COLOR, nick, NO_COLOR, log_object.text)) + more, end='')
+ print(
+ f'{NICK_COLOR}{nick}{NO_COLOR}> '
+ f'{log_object.text}\n' + more,
+ end='',
+ )
+
@print_log.register(type(None))
-def _(log_object, additional_lines=None):
+def print_log_none(log_object, additional_lines=None):
return
+
@print_log.register(LogInfo)
-def _(log_object, additional_lines=None):
- if not SHOW_INFO: return
+def print_log_loginfo(log_object: LogInfo,
+ additional_lines: Optional[List[str]] = None):
+ if not SHOW_INFO:
+ return
time = log_object.time.strftime('%Y-%m-%d %H:%M:%S') + ' '
offset = (poopt.wcswidth(time) + 1) if SHOW_TIME else 0
@@ -54,13 +70,17 @@ def _(log_object, additional_lines=None):
more = ''
if SHOW_TIME:
- print(('%s%s%s %s%s\n' % (TIME_COLOR, time, NO_COLOR, INFO_COLOR, log_object.text)) + more, end='')
+ print(
+ f'{TIME_COLOR}{time}{NO_COLOR}{log_object.text}\n' + more,
+ end=''
+ )
else:
- print(('%s%s\n' % (INFO_COLOR, log_object.text)) + more, end='')
+ print(f'{INFO_COLOR}{log_object.text}\n' + more, end='')
-def parse_messages(fd):
+
+def parse_messages(fd: IO[str]):
in_text = False
- more_lines = []
+ more_lines: List[str] = []
current_log = None
for line in fd:
if in_text and not line.startswith(' '):
@@ -71,10 +91,11 @@ def parse_messages(fd):
elif in_text:
more_lines.append(line[1:])
continue
- current_log = parse_log_line(line)
+ current_log = parse_log_line(line, fd.name)
in_text = True
print_log(current_log, more_lines)
+
if __name__ == '__main__':
parser = argparse.ArgumentParser('poezio_logs', description="""
Show the logs stored in poezio format in a more human-readable way.