diff --git a/robotpy_installer/roborio_utils.py b/robotpy_installer/roborio_utils.py index 6824dce..6200f0f 100644 --- a/robotpy_installer/roborio_utils.py +++ b/robotpy_installer/roborio_utils.py @@ -91,15 +91,13 @@ def uninstall_cpp_java_admin(ssh: SshController): def get_rio_py_packages(ssh: SshController) -> typing.Dict[str, str]: # Use importlib.metadata instead of pip because it's way faster than pip - result = ssh.exec_cmd( + output = ssh.check_output( "/usr/local/bin/python3 -c " "'from importlib.metadata import distributions;" "import json; import sys; " "json.dump({dist.name: dist.version for dist in distributions()},sys.stdout)'", - get_output=True, ) - assert result.stdout is not None - d = json.loads(result.stdout) + d = json.loads(output) # sometimes distributions.name or version is None return {k: v for k, v in d.items() if k and v} diff --git a/robotpy_installer/sshcontroller.py b/robotpy_installer/sshcontroller.py index 806f493..4da1fb7 100644 --- a/robotpy_installer/sshcontroller.py +++ b/robotpy_installer/sshcontroller.py @@ -105,6 +105,11 @@ def exec_cmd( retval = channel.recv_exit_status() if check and retval != 0: + if not print_output: + try: + print(buffer.getvalue(), file=sys.stderr) + except UnicodeEncodeError: + pass raise SshExecError( "Command '%s' returned non-zero error status %s" % (cmd, retval), retval,