poezio/poezio/xdg.py
2018-07-22 14:25:18 +02:00

41 lines
1.2 KiB
Python

# Copyright 2018 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
#
# 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
from typing import Dict
# $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',
} # type: Dict[str, Path]
def _get_directory(variable: str) -> Path:
"""
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')