]> kaliko git repositories - mpd-sima.git/commitdiff
Improved CLI error handling
authorkaliko <kaliko@azylum.org>
Wed, 28 Jan 2015 19:41:49 +0000 (20:41 +0100)
committerkaliko <kaliko@azylum.org>
Wed, 28 Jan 2015 20:20:32 +0000 (21:20 +0100)
sima/utils/config.py
sima/utils/startopt.py
sima/utils/utils.py

index bf370f11d1408ea459132cc9c96b78f90e0143a2..0e775ecc54d5c1294daebdc643b1250fe3037d0f 100644 (file)
@@ -127,13 +127,19 @@ class ConfMan(object):  # CONFIG MANAGER CLASS
         self.config['sima']['db_file'] = join(self.config['sima']['var_dir'], 'sima.db')
 
     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']),]:
             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)
@@ -142,9 +148,11 @@ class ConfMan(object):  # CONFIG MANAGER CLASS
                     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):
index ef2032c13b0f013c1fecc3a5b0fd4ee21c3e7bc3..51319f60afc7360b3a5d64d8993ec6e29c1cdeee 100644 (file)
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009, 2010, 2011, 2012, 2013, 2014 Jack Kaliko <kaliko@azylum.org>
+# Copyright (c) 2009, 2010, 2011, 2012, 2013, 2014, 2015 Jack Kaliko <kaliko@azylum.org>
 #
 #  This file is part of sima
 #
@@ -24,12 +24,9 @@ from argparse import (ArgumentParser, SUPPRESS)
 
 from .utils import Wfile, Rfile, Wdir
 
-USAGE = """USAGE:  %prog [--help] [options]"""
 DESCRIPTION = """
-sima automagicaly queue new tracks in MPD playlist.
-All command line options will override their equivalent in configuration
-file.
-"""
+MPD_sima automagicaly queue new tracks in MPD playlist.
+Command line options override their equivalent in configuration file."""
 
 
 def clean_dict(to_clean):
@@ -124,12 +121,11 @@ class StartOpt(object):
         Declare options in ArgumentParser object.
         """
         self.parser = ArgumentParser(description=DESCRIPTION,
-                                   usage='%(prog)s [options]',
-                                   prog=self.info.get('prog'),
-                                   epilog='Happy Listening',
-                )
+                                     prog=self.info.get('prog'),
+                                     epilog='Happy Listening',
+                                    )
         self.parser.add_argument('--version', action='version',
-                version='%(prog)s {version}'.format(**self.info))
+                        version='%(prog)s {version}'.format(**self.info))
         # Add all options declare in OPTS
         for opt in OPTS:
             opt_names = opt.pop('sw')
index ff0641057afdb57ce11c57131202f9d6378cbac0..2cb7c357a8dbd080405031e17281298dc8a07ea5 100644 (file)
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 #
-# Copyright (c) 2010, 2011, 2013, 2014 Jack Kaliko <kaliko@azylum.org>
+# Copyright (c) 2010, 2011, 2013, 2014, 2015 Jack Kaliko <kaliko@azylum.org>
 #
 #  This file is part of sima
 #
@@ -113,9 +113,11 @@ class Wfile(FileAction):
     """Is file writable
     """
     def checks(self):
+        if isdir(self._file):
+            self.parser.error('need a file not a directory: {}'.format(self._file))
         if not exists(self._dir):
             #raise ArgumentError(self, '"{0}" does not exist'.format(self._dir))
-            self.parser.error('file does not exist: {0}'.format(self._dir))
+            self.parser.error('directory does not exist: {0}'.format(self._dir))
         if not exists(self._file):
             # Is parent directory writable then
             if not access(self._dir, W_OK):