Skip to content

Commit

Permalink
linux/storagepath: Revamp handling of user-dirs
Browse files Browse the repository at this point in the history
- dont assume that ~/.config/user-dirs.dirs exists
- don't assume it does have contents or the relevant value
- don't use exception handling as happy path control flow
- when defaulting, use the path under HOME, not e.g. /Pictures
  • Loading branch information
rski committed Sep 17, 2021
1 parent 99dabb2 commit abb28a7
Showing 1 changed file with 13 additions and 12 deletions.
25 changes: 13 additions & 12 deletions plyer/platforms/linux/storagepath.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
'''

from plyer.facades import StoragePath
from os.path import expanduser, dirname, abspath
from os.path import expanduser, dirname, abspath, join, exists

# Default paths for each name
USER_DIRS = "/.config/user-dirs.dirs"
Expand All @@ -22,17 +22,18 @@
class LinuxStoragePath(StoragePath):

def _get_from_user_dirs(self, name):
try:
with open(self._get_home_dir() + USER_DIRS, "r") as f:
lines = f.readlines()
# Find the line that starts with XDG_<name> to get the path
index = [i for i, v in enumerate(lines)
if v.startswith("XDG_" + name)][0]
return lines[index].split('"')[1]
except KeyError:
return PATHS[name]
except Exception as e:
raise e
home_dir = self.__get_home_dir(),
default = join(home_dir, PATHS[name])
user_dirs = join(home_dir, USER_DIRS)
if not exists(user_dirs):
return default

with open(user_dirs, "r") as f:
for l in f.readlines():
if l.startswith("XDG_" + name):
return l.split('"')[1]

return default

def _get_home_dir(self):
return expanduser('~')
Expand Down

0 comments on commit abb28a7

Please sign in to comment.