diff --git a/docs/parsers/rsync.md b/docs/parsers/rsync.md index 177d9a5d..dc9cbe7c 100644 --- a/docs/parsers/rsync.md +++ b/docs/parsers/rsync.md @@ -159,4 +159,4 @@ Compatibility: linux, darwin, freebsd Source: [`jc/parsers/rsync.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/rsync.py) -Version 1.1 by Kelly Brazil (kellyjonbrazil@gmail.com) +Version 1.2 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/docs/parsers/rsync_s.md b/docs/parsers/rsync_s.md index 9945321b..01cb1528 100644 --- a/docs/parsers/rsync_s.md +++ b/docs/parsers/rsync_s.md @@ -116,4 +116,4 @@ Compatibility: linux, darwin, freebsd Source: [`jc/parsers/rsync_s.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/rsync_s.py) -Version 1.2 by Kelly Brazil (kellyjonbrazil@gmail.com) +Version 1.3 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/parsers/rsync.py b/jc/parsers/rsync.py index 137d2f7a..0a3fdede 100644 --- a/jc/parsers/rsync.py +++ b/jc/parsers/rsync.py @@ -131,13 +131,13 @@ Examples: """ import re from copy import deepcopy -from typing import List, Dict +from typing import List, Dict, Union import jc.utils class info(): """Provides parser metadata (version, author, etc.)""" - version = '1.1' + version = '1.2' description = '`rsync` command parser' author = 'Kelly Brazil' author_email = 'kellyjonbrazil@gmail.com' @@ -171,10 +171,26 @@ def _process(proc_data: List[Dict]) -> List[Dict]: for item in proc_data: for key in item['summary']: if key in int_list: - item['summary'][key] = jc.utils.convert_to_int(item['summary'][key]) + item['summary'][key] = jc.utils.convert_size_to_int(item['summary'][key]) if key in float_list: - item['summary'][key] = jc.utils.convert_to_float(item['summary'][key]) + converted_val: Union[float, None] = None + val = item['summary'][key] + if any([ + 'K' in val, + 'M' in val, + 'G' in val, + 'T' in val + ]): + converted_int_val = jc.utils.convert_size_to_int(val) + + if not converted_int_val is None: + converted_val = float(converted_int_val) + + else: + converted_val = jc.utils.convert_to_float(val) + + item['summary'][key] = converted_val for entry in item['files']: for key in entry: @@ -311,6 +327,9 @@ def parse( stat1_line_re = re.compile(r'(sent)\s+(?P[0-9,]+)\s+(bytes)\s+(received)\s+(?P[0-9,]+)\s+(bytes)\s+(?P[0-9,.]+)\s+(bytes/sec)') stat2_line_re = re.compile(r'(total size is)\s+(?P[0-9,]+)\s+(speedup is)\s+(?P[0-9,.]+)') + stat1_line_simple_re = re.compile(r'(sent)\s+(?P[0-9,.TGMK]+)\s+(bytes)\s+(received)\s+(?P[0-9,.TGMK]+)\s+(bytes)\s+(?P[0-9,.TGMK]+)\s+(bytes/sec)') + stat2_line_simple_re = re.compile(r'(total\s+size\s+is)\s+(?P[0-9,.TGMK]+)\s+(speedup\s+is)\s+(?P[0-9,.TGMK]+)') + file_line_log_re = re.compile(r'(?P\d\d\d\d/\d\d/\d\d)\s+(?P