diff --git a/morituri/common/accurip.py b/morituri/common/accurip.py index a6c2309f..74518034 100644 --- a/morituri/common/accurip.py +++ b/morituri/common/accurip.py @@ -28,8 +28,7 @@ from morituri.common import log, directory -d = directory.Directory() -_CACHE_DIR = d.getCache() +_CACHE_DIR = directory.cache_path() class AccuCache(log.Loggable): diff --git a/morituri/common/cache.py b/morituri/common/cache.py index f9c701a9..0a2d473a 100644 --- a/morituri/common/cache.py +++ b/morituri/common/cache.py @@ -155,17 +155,9 @@ def get(self, key): class ResultCache(log.Loggable): def __init__(self, path=None): - if not path: - path = self._getResultCachePath() - - self._path = path + self._path = path or directory.cache_path('result') self._pcache = PersistedCache(self._path) - def _getResultCachePath(self): - d = directory.Directory() - path = d.getCache('result') - return path - def getRipResult(self, cddbdiscid, create=True): """ Retrieve the persistable RipResult either from our cache (from a @@ -208,8 +200,7 @@ class TableCache(log.Loggable): def __init__(self, path=None): if not path: - d = directory.Directory() - self._path = d.getCache('table') + self._path = directory.cache_path('table') else: self._path = path diff --git a/morituri/common/config.py b/morituri/common/config.py index 109dfed8..2ff3078b 100644 --- a/morituri/common/config.py +++ b/morituri/common/config.py @@ -33,18 +33,12 @@ class Config(log.Loggable): def __init__(self, path=None): - if not path: - path = self.getDefaultPath() - - self._path = path + self._path = path or directory.config_path() self._parser = ConfigParser.SafeConfigParser() self.open() - def getDefaultPath(self): - return directory.Directory().getConfig() - def open(self): # Open the file with the correct encoding if os.path.exists(self._path): diff --git a/morituri/common/directory.py b/morituri/common/directory.py index 04ba39d6..a15041e4 100644 --- a/morituri/common/directory.py +++ b/morituri/common/directory.py @@ -20,51 +20,31 @@ # You should have received a copy of the GNU General Public License # along with morituri. If not, see . -import os - -from morituri.common import log - - -class Directory(log.Loggable): - - def getConfig(self): - config_directory = os.getenv('XDG_CONFIG_HOME') - if not config_directory: - config_directory = os.path.join(os.path.expanduser('~'), - u'.config') - folder_path = os.path.join(config_directory, u'whipper') - if not os.path.exists(folder_path): - os.makedirs(folder_path) - path = os.path.join(config_directory, u'whipper/whipper.conf') - self.info('Configuration file path: %s' % path) - return path - - def getCache(self, name=None): - cache_directory = os.getenv('XDG_CACHE_HOME') - if not cache_directory: - cache_directory = os.path.join(os.path.expanduser('~'), u'.cache') - path = os.path.join(cache_directory, u'whipper') - self.info('Cache directory path: %s' % path) - if not os.path.exists(path): - os.makedirs(path) - if name: - path = os.path.join(path, name) - if not os.path.exists(path): - os.makedirs(path) - return path - - def getData(self, name=None): - data_directory = os.getenv('XDG_DATA_HOME') - if not data_directory: - data_directory = os.path.join(os.path.expanduser('~'), - u'.local/share') - path = os.path.join(data_directory, u'whipper') - self.info('Data directory path: %s' % path) - if not os.path.exists(path): - os.makedirs(path) - if name: - path = os.path.join(path, name) - if not os.path.exists(path): - os.makedirs(path) - return path - +from os import getenv, makedirs +from os.path import join, expanduser, exists + +def config_path(): + path = join(getenv('XDG_CONFIG_HOME') or join(expanduser('~'), u'.config'), + u'whipper') + if not exists(path): + makedirs(path) + return join(path, u'whipper.conf') + +def cache_path(name=None): + path = join(getenv('XDG_CACHE_HOME') or join(expanduser('~'), u'.cache'), + u'whipper') + if name: + path = join(path, name) + if not exists(path): + makedirs(path) + return path + +def data_path(name=None): + path = join(getenv('XDG_DATA_HOME') + or join(expanduser('~'), u'.local/share'), + u'whipper') + if name: + path = join(path, name) + if not exists(path): + makedirs(path) + return path diff --git a/morituri/rip/main.py b/morituri/rip/main.py index 667cdbe3..b6f82be3 100644 --- a/morituri/rip/main.py +++ b/morituri/rip/main.py @@ -17,6 +17,11 @@ def main(): # set user agent musicbrainzngs.set_useragent("morituri", configure.version, 'https://thomas.apestaart.org/morituri/trac') + # register plugins with pkg_resources + distributions, _ = pkg_resources.working_set.find_plugins( + pkg_resources.Environment([directory.data_path('plugins')]) + ) + map(pkg_resources.working_set.add, distributions) c = Rip() try: ret = c.parse(sys.argv[1:]) diff --git a/morituri/test/test_common_directory.py b/morituri/test/test_common_directory.py index 1c7b6c14..3629115e 100644 --- a/morituri/test/test_common_directory.py +++ b/morituri/test/test_common_directory.py @@ -9,10 +9,8 @@ class DirectoryTestCase(common.TestCase): def testAll(self): - d = directory.Directory() - - path = d.getConfig() + path = directory.config_path() self.failUnless(path.startswith('/home')) - path = d.getCache() + path = directory.cache_path() self.failUnless(path.startswith('/home'))