From 83f35256aee71f2619ddf880e2b8f2d6c63280bc Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Mon, 16 Dec 2019 11:01:43 -0800 Subject: [PATCH] add OSX support --- jc/parsers/uname.py | 39 +++++++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/jc/parsers/uname.py b/jc/parsers/uname.py index 1132da08..878ad4b6 100644 --- a/jc/parsers/uname.py +++ b/jc/parsers/uname.py @@ -10,7 +10,7 @@ Limitations: Compatibility: - 'linux' + 'linux', 'darwin' Example: @@ -30,13 +30,13 @@ import jc.utils class info(): - version = '1.0' + version = '1.1' description = 'uname -a parser' author = 'Kelly Brazil' author_email = 'kellyjonbrazil@gmail.com' # compatible options: linux, darwin, cygwin, win32, aix, freebsd - compatible = ['linux'] + compatible = ['linux', 'darwin'] def process(proc_data): @@ -84,22 +84,33 @@ def parse(data, raw=False, quiet=False): jc.utils.compatibility(__name__, info.compatible) raw_output = {} - parsed_line = data.split(maxsplit=3) + split_line = data.split() - if len(parsed_line) > 1: + if len(split_line) > 1: + # check for OSX output + if data.startswith('Darwin'): + parsed_line = data.split() + raw_output['machine'] = parsed_line.pop(-1) + raw_output['kernel_name'] = parsed_line.pop(0) + raw_output['node_name'] = parsed_line.pop(0) + raw_output['kernel_release'] = parsed_line.pop(0) + raw_output['kernel_version'] = ' '.join(parsed_line) - raw_output['kernel_name'] = parsed_line.pop(0) - raw_output['node_name'] = parsed_line.pop(0) - raw_output['kernel_release'] = parsed_line.pop(0) + # otherwise use linux parser + else: + parsed_line = data.split(maxsplit=3) + raw_output['kernel_name'] = parsed_line.pop(0) + raw_output['node_name'] = parsed_line.pop(0) + raw_output['kernel_release'] = parsed_line.pop(0) - parsed_line = parsed_line[-1].rsplit(maxsplit=4) + parsed_line = parsed_line[-1].rsplit(maxsplit=4) - raw_output['operating_system'] = parsed_line.pop(-1) - raw_output['hardware_platform'] = parsed_line.pop(-1) - raw_output['processor'] = parsed_line.pop(-1) - raw_output['machine'] = parsed_line.pop(-1) + raw_output['operating_system'] = parsed_line.pop(-1) + raw_output['hardware_platform'] = parsed_line.pop(-1) + raw_output['processor'] = parsed_line.pop(-1) + raw_output['machine'] = parsed_line.pop(-1) - raw_output['kernel_version'] = parsed_line.pop(0) + raw_output['kernel_version'] = parsed_line.pop(0) if raw: return raw_output