diff --git a/archinstall/lib/disk/device_model.py b/archinstall/lib/disk/device_model.py index 20cd94b7..78847ce7 100644 --- a/archinstall/lib/disk/device_model.py +++ b/archinstall/lib/disk/device_model.py @@ -1435,7 +1435,7 @@ def _fetch_lsblk_info( cmd.append(str(dev_path)) try: - result = SysCommand(cmd).decode() + worker = SysCommand(cmd) except SysCallError as err: # Get the output minus the message/info from lsblk if it returns a non-zero exit code. if err.worker: @@ -1448,12 +1448,12 @@ def _fetch_lsblk_info( raise err try: - block_devices = json.loads(result) + data = json.loads(worker.output(remove_cr=False)) except json.decoder.JSONDecodeError as err: - error(f"Could not decode lsblk JSON: {result}") + error(f"Could not decode lsblk JSON:\n{worker.output().decode().rstrip()}") raise err - blockdevices = block_devices['blockdevices'] + blockdevices = data['blockdevices'] return [LsblkInfo.from_json(device) for device in blockdevices] diff --git a/archinstall/lib/general.py b/archinstall/lib/general.py index 6ec9b37e..6d738890 100644 --- a/archinstall/lib/general.py +++ b/archinstall/lib/general.py @@ -442,11 +442,14 @@ class SysCommand: return val.strip() return val - def output(self) -> bytes: + def output(self, remove_cr: bool = True) -> bytes: if not self.session: raise ValueError('No session available') - return self.session._trace_log.replace(b'\r\n', b'\n') + if remove_cr: + return self.session._trace_log.replace(b'\r\n', b'\n') + + return self.session._trace_log @property def exit_code(self) -> Optional[int]: