From da12fe7d6aa9ee9a710e914185a45f843180e42e Mon Sep 17 00:00:00 2001 From: Emmanuel Gil Peyrot Date: Wed, 4 Jul 2018 11:42:04 +0200 Subject: Move XDG basedir functions to the poezio.xdg module. --- poezio/xdg.py | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 poezio/xdg.py (limited to 'poezio/xdg.py') diff --git a/poezio/xdg.py b/poezio/xdg.py new file mode 100644 index 00000000..79dc24a9 --- /dev/null +++ b/poezio/xdg.py @@ -0,0 +1,39 @@ +# Copyright 2018 Emmanuel Gil Peyrot +# +# This file is part of Poezio. +# +# Poezio is free software: you can redistribute it and/or modify +# it under the terms of the zlib license. See the COPYING file. + +""" +Implements the XDG base directory specification. + +https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html +""" + +from pathlib import Path +from os import environ + +# $HOME has already been checked to not be None in test_env(). +DEFAULT_PATHS = { + 'XDG_CONFIG_HOME': Path.home() / '.config', + 'XDG_DATA_HOME': Path.home() / '.local' / 'share', + 'XDG_CACHE_HOME': Path.home() / '.cache', +} + +def _get_directory(variable: str): + """ + returns the default configuration directory path + """ + if variable not in DEFAULT_PATHS: + raise ValueError('Invalid XDG basedir variable') + xdg = environ.get(variable) + if xdg is not None: + xdg_path = Path(xdg) + if xdg_path.is_absolute(): + return xdg_path / 'poezio' + return DEFAULT_PATHS[variable] / 'poezio' + +CONFIG_HOME = _get_directory('XDG_CONFIG_HOME') +DATA_HOME = _get_directory('XDG_DATA_HOME') +CACHE_HOME = _get_directory('XDG_CACHE_HOME') -- cgit v1.2.3