From 9175a0a97c7bc2eeb995e53d50a07be6a7e834f0 Mon Sep 17 00:00:00 2001 From: Jeffery To Date: Thu, 9 Nov 2023 14:20:58 +0800 Subject: [PATCH] Handle OSErrors when running show path commands Bash may not always be installed, for example on OpenWrt, and attempting to call the show path commands for Bash will cause a FileNotFoundError to be raised. This wraps the subprocess call with a try statement and returns the empty string in the case of an OSError. --- userpath/utils.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/userpath/utils.py b/userpath/utils.py index 7f5d342..57460ff 100644 --- a/userpath/utils.py +++ b/userpath/utils.py @@ -30,8 +30,11 @@ def ensure_parent_dir_exists(path): def get_flat_output(command, sep=os.pathsep, **kwargs): - process = subprocess.Popen(command, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, **kwargs) - output = process.communicate()[0].decode(locale.getpreferredencoding(False)).strip() + try: + process = subprocess.Popen(command, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, **kwargs) + output = process.communicate()[0].decode(locale.getpreferredencoding(False)).strip() + except OSError: + return '' # We do this because the output may contain new lines. lines = [line.strip() for line in output.splitlines()]