# -*- coding: utf-8 -*-
-# Copyright (c) 2009, 2010, 2011, 2013, 2014 Jack Kaliko <kaliko@azylum.org>
+# Copyright (c) 2009, 2010, 2011, 2013, 2014, 2015 Jack Kaliko <kaliko@azylum.org>
#
# This file is part of sima
#
# DEFAULTS
DIRNAME = 'mpd_sima'
-CONF_FILE = 'sima.cfg'
+CONF_FILE = 'mpd_sima.cfg'
DEFAULT_CONF = {
'MPD': {
'port': 6600,
},
'sima': {
- 'internal': "Crop, Lastfm, RandomFallBack",
+ 'internal': "Crop, Lastfm, Random",
'contrib': "",
'user_db': "false",
'history_duration': 8,
- 'queue_length': 1,
+ 'queue_length': 2,
'var_dir': 'empty',
'musicbrainzid': "true",
},
},
'crop': {
'consume': 10,
+ 'priority': 0,
},
'echonest': {
'queue_mode': "track", #TODO control values
'track_to_add': 1,
'album_to_add': 1,
'depth': 1,
+ 'priority': 100,
},
'lastfm': {
'queue_mode': "track", #TODO control values
'album_to_add': 1,
'depth': 1,
'cache': True,
+ 'priority': 100,
},
- 'randomfallback': {
+ 'random': {
'flavour': "sensible", # in pure, sensible
'track_to_add': 1,
- }
+ 'priority': 50,
+ },
}
#
self.supersedes_config_with_cmd_line_options()
# Controls files access
self.control_facc()
- # generate dbfile
+ # set dbfile
self.config['sima']['db_file'] = join(self.config['sima']['var_dir'], 'sima.db')
+ # Create directories
+ data_dir = self.config['sima']['var_dir']
+ if not isdir(data_dir):
+ self.log.trace('Creating "{}"'.format(data_dir))
+ makedirs(data_dir)
+ chmod(data_dir, 0o700)
+
def control_facc(self):
- """TODO: redundant with startopt cli args controls
+ """Controls file access.
+ This is relevant only for file provided through the configuration file
+ since files provided on the command line are already checked with
+ argparse.
"""
ok = True
- for op, ftochk in [('log', self.config['log']['logfile']),
- ('pidfile', self.config['daemon']['pidfile']),]:
+ for op, ftochk in [('logfile', self.config.get('log','logfile')),
+ ('pidfile', self.config.get('daemon', 'pidfile')),]:
if not ftochk:
continue
+ if isdir(ftochk):
+ self.log.critical('Need a file not a directory: "{}"'.format(ftochk))
+ ok = False
if not exists(ftochk):
# Is parent directory writable then
filedir = dirname(ftochk)
ok = False
else:
if not access(ftochk, W_OK):
- self.log.critical('no write access to "{0}" ({1}))'.format(ftochk, op))
+ self.log.critical('no write access to "{0}" ({1})'.format(ftochk, op))
ok = False
if not ok:
+ if exists(self.conf_file):
+ self.log.warning('Try to check the configuration file: {}'.format(self.conf_file))
sys.exit(2)
def control_mod(self):
elif homedir and isdir(homedir) and homedir not in ['/']:
data_dir = join(homedir, '.local', 'share', DIRNAME)
else:
- self.log.error('Can\'t find a suitable location for data folder (XDG_DATA_HOME)')
- self.log.error('Please use "--var_dir" to set a proper location')
+ self.log.critical('Can\'t find a suitable location for data folder (XDG_DATA_HOME)')
+ self.log.critical('Please use "--var-dir" to set a proper location')
sys.exit(1)
- if not isdir(data_dir):
- makedirs(data_dir)
- chmod(data_dir, 0o700)
-
if self.startopt.get('conf_file'):
# No need to handle conf file location
pass
conf_dir = join(environ.get('XDG_CONFIG_HOME'), DIRNAME)
elif homedir and isdir(homedir) and homedir not in ['/']:
conf_dir = join(homedir, '.config', DIRNAME)
- # Create conf_dir if necessary
- if not isdir(conf_dir):
- makedirs(conf_dir)
- chmod(conf_dir, 0o700)
self.conf_file = join(conf_dir, CONF_FILE)
else:
self.log.critical('Can\'t find a suitable location for config folder (XDG_CONFIG_HOME)')