diff --git a/CHANGELOG b/CHANGELOG index 977600d4..4f4f124d 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,7 +1,8 @@ jc changelog -20221117 v1.22.3 +20221118 v1.22.3 - Fix `git-log` and `git-log-s` parsers for failure on empty author name +- Update `os-prober` parser with split EFI partition fields - Fix several documentation typos 20221107 v1.22.2 diff --git a/docs/parsers/os_prober.md b/docs/parsers/os_prober.md index 92733454..9e9680e2 100644 --- a/docs/parsers/os_prober.md +++ b/docs/parsers/os_prober.md @@ -21,12 +21,15 @@ Usage (module): Schema: { - 'partition': string, - 'name': string, - 'short_name': string, - 'type': string + "partition": string, + "efi_bootmgr": string, # [0] + "name": string, + "short_name": string, + "type": string } + [0] only exists if an EFI boot manager is detected + Examples: $ os-prober | jc --os-prober -p @@ -60,4 +63,4 @@ Returns: ### Parser Information Compatibility: linux -Version 1.0 by Kelly Brazil (kellyjonbrazil@gmail.com) +Version 1.1 by Kelly Brazil (kellyjonbrazil@gmail.com) diff --git a/jc/parsers/os_prober.py b/jc/parsers/os_prober.py index 0f6827ca..9e0a7051 100644 --- a/jc/parsers/os_prober.py +++ b/jc/parsers/os_prober.py @@ -16,12 +16,15 @@ Usage (module): Schema: { - 'partition': string, - 'name': string, - 'short_name': string, - 'type': string + "partition": string, + "efi_bootmgr": string, # [0] + "name": string, + "short_name": string, + "type": string } + [0] only exists if an EFI boot manager is detected + Examples: $ os-prober | jc --os-prober -p @@ -39,7 +42,7 @@ import jc.utils class info(): """Provides parser metadata (version, author, etc.)""" - version = '1.0' + version = '1.1' description = '`os-prober` command parser' author = 'Kelly Brazil' author_email = 'kellyjonbrazil@gmail.com' @@ -62,6 +65,12 @@ def _process(proc_data: JSONDictType) -> JSONDictType: Dictionary. Structured to conform to the schema. """ + # check for EFI partition@boot-manager and split/add fields + if 'partition' in proc_data and '@' in proc_data['partition']: # type: ignore + new_part, efi_bootmgr = proc_data['partition'].split('@') # type: ignore + proc_data['partition'] = new_part + proc_data['efi_bootmgr'] = efi_bootmgr + return proc_data diff --git a/tests/test_os_prober.py b/tests/test_os_prober.py index 499d2a32..508ee093 100644 --- a/tests/test_os_prober.py +++ b/tests/test_os_prober.py @@ -19,8 +19,8 @@ class MyTests(unittest.TestCase): """ Test 'os_prober' 1 """ - self.assertEqual(parse( - '/dev/sda1:Windows 7 (loader):Windows:chain', quiet=True), + self.assertEqual( + parse('/dev/sda1:Windows 7 (loader):Windows:chain', quiet=True), {"partition":"/dev/sda1","name":"Windows 7 (loader)","short_name":"Windows","type":"chain"} ) @@ -28,8 +28,8 @@ class MyTests(unittest.TestCase): """ Test 'os_prober' 2 """ - self.assertEqual(parse( - '/dev/sda1:Windows 10:Windows:chain', quiet=True), + self.assertEqual( + parse('/dev/sda1:Windows 10:Windows:chain', quiet=True), {"partition":"/dev/sda1","name":"Windows 10","short_name":"Windows","type":"chain"} ) @@ -37,8 +37,17 @@ class MyTests(unittest.TestCase): """ Test 'os_prober' 3 """ - self.assertEqual(parse( - '/dev/sda1@/efi/Microsoft/Boot/bootmgfw.efi:Windows Boot Manager:Windows:efi', quiet=True), + self.assertEqual( + parse('/dev/sda1@/efi/Microsoft/Boot/bootmgfw.efi:Windows Boot Manager:Windows:efi', quiet=True), + {"partition":"/dev/sda1","efi_bootmgr":"/efi/Microsoft/Boot/bootmgfw.efi","name":"Windows Boot Manager","short_name":"Windows","type":"efi"} + ) + + def test_os_prober_3_raw(self): + """ + Test 'os_prober' 3 with raw output + """ + self.assertEqual( + parse('/dev/sda1@/efi/Microsoft/Boot/bootmgfw.efi:Windows Boot Manager:Windows:efi', quiet=True, raw=True), {"partition":"/dev/sda1@/efi/Microsoft/Boot/bootmgfw.efi","name":"Windows Boot Manager","short_name":"Windows","type":"efi"} )