]> kaliko git repositories - mpd-sima.git/blobdiff - sima/utils/config.py
Fixed mopidy compatibility implementation (Closes #21)
[mpd-sima.git] / sima / utils / config.py
index 92d3fb916c4b6ff2b499c712e7c4f1f284e6725a..b21b1f9597a2f9470fd7e72a4e16746cb8a5fdea 100644 (file)
@@ -16,7 +16,7 @@
 #  You should have received a copy of the GNU General Public License
 #  along with sima.  If not, see <http://www.gnu.org/licenses/>.
 #
-#
+# pylint: disable=bad-continuation
 
 """
 Deal with configuration and data files.
@@ -29,7 +29,7 @@ import logging
 import sys
 
 from configparser import Error
-from os import (access, makedirs, environ, stat, chmod, W_OK, R_OK)
+from os import (access, makedirs, environ, stat, chmod, W_OK)
 from os.path import (join, isdir, isfile, dirname, exists)
 from stat import (S_IMODE, ST_MODE, S_IRWXO, S_IRWXG)
 
@@ -53,6 +53,9 @@ DEFAULT_CONF = {
             'queue_length': 2,
             'var_dir': 'empty',
             'musicbrainzid': "true",
+            'repeat_disable_queue': "true",
+            'single_disable_queue': "true",
+            'mopidy_compat': "false",
             },
         'daemon':{
             'daemon': False,
@@ -66,15 +69,6 @@ DEFAULT_CONF = {
             'consume': 10,
             'priority': 0,
             },
-        'echonest': {
-            'queue_mode': "track", #TODO control values
-            'max_art': 15,
-            'single_album': "false",
-            'track_to_add': 1,
-            'album_to_add': 1,
-            'depth': 1,
-            'priority': 100,
-            },
         'lastfm': {
             'queue_mode': "track", #TODO control values
             'max_art': 10,
@@ -144,26 +138,26 @@ class ConfMan(object):  # CONFIG MANAGER CLASS
         argparse.
         """
         ok = True
-        for op, ftochk in [('logfile', self.config.get('log','logfile')),
+        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))
+                self.log.critical('Need a file not a directory: "%s"', ftochk)
                 ok = False
             if not exists(ftochk):
                 # Is parent directory writable then
                 filedir = dirname(ftochk)
                 if not access(filedir, W_OK):
-                    self.log.critical('no write access to "{0}" ({1})'.format(filedir, op))
+                    self.log.critical('no write access to "%s" (%s)', filedir, op)
                     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 "%s" (%s)', 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))
+                self.log.warning('Try to check the configuration file: %s', self.conf_file)
             sys.exit(2)
 
     def control_mod(self):
@@ -171,7 +165,7 @@ class ConfMan(object):  # CONFIG MANAGER CLASS
         Controls conf file permissions.
         """
         mode = S_IMODE(stat(self.conf_file)[ST_MODE])
-        self.log.debug('file permission is: %o' % mode)
+        self.log.debug('file permission is: %o', mode)
         if mode & S_IRWXO or mode & S_IRWXG:
             self.log.warning('File is readable by "other" and/or' +
                              ' "group" (actual permission %o octal).' %
@@ -185,18 +179,25 @@ class ConfMan(object):  # CONFIG MANAGER CLASS
             for opt in self.config.options(sec):
                 if opt in list(self.startopt.keys()):
                     self.config.set(sec, opt, str(self.startopt.get(opt)))
+        # honor MPD_HOST format as in mpc(1)  for command line option --host
+        if self.startopt.get('host'):
+            if '@' in self.startopt.get('host'):
+                print(self.startopt.get('host').split('@'))
+                passwd, host = self.startopt.get('host').split('@')
+                self.config.set('MPD', 'password', passwd)
+                self.config.set('MPD', 'host', host)
 
     def use_envar(self):
         """Use MPD en.var. to set defaults"""
         mpd_host, mpd_port, passwd = utils.get_mpd_environ()
         if mpd_host:
-            self.log.info('Env. variable MPD_HOST set to "%s"' % mpd_host)
+            self.log.info('Env. variable MPD_HOST set to "%s"', mpd_host)
             self.config['MPD'].update(host=mpd_host)
         if passwd:
             self.log.info('Env. variable MPD_HOST contains password.')
             self.config['MPD'].update(password=passwd)
         if mpd_port:
-            self.log.info('Env. variable MPD_PORT set to "%s".' % mpd_port)
+            self.log.info('Env. variable MPD_PORT set to "%s".', mpd_port)
             self.config['MPD'].update(port=mpd_port)
 
     def init_config(self):
@@ -237,7 +238,7 @@ class ConfMan(object):  # CONFIG MANAGER CLASS
         if not isfile(self.conf_file):
             return
 
-        self.log.info('Loading configuration from:  %s' % self.conf_file)
+        self.log.info('Loading configuration from:  %s', self.conf_file)
         self.control_mod()
 
         try: