]> Frank Brehm's Git Trees - my-stuff/py-logrotate.git/commitdiff
Option parsing abgeschlossen
authorFrank Brehm <frank@brehm-online.com>
Sun, 17 Apr 2011 08:53:02 +0000 (08:53 +0000)
committerFrank Brehm <frank@brehm-online.com>
Sun, 17 Apr 2011 08:53:02 +0000 (08:53 +0000)
git-svn-id: http://svn.brehm-online.com/svn/my-stuff/python/PyLogrotate/trunk@200 ec8d2aa5-1599-4edb-8739-2b3a1bc399aa

LogRotateGetopts.py
logrotate.py

index 06f82e7d21fd54f4a36ab2a5f1a8a4964d75be95..930504c0c3b9e49775379b257aa35485787b2f10 100755 (executable)
@@ -34,6 +34,14 @@ __version__    = '0.0.1 ' + revision
 __license__    = 'GPL3'
 
 
+#========================================================================
+
+class LogrotateOptParserError(Exception):
+    '''
+    Class for exceptions in this module, escpacially
+    due to false commandline options.
+    '''
+
 #========================================================================
 
 class LogrotateOptParser(object):
@@ -69,7 +77,7 @@ class LogrotateOptParser(object):
         @type: str
         '''
 
-        self.description = 'rotates and compresses system logs'
+        self.description = 'Rotates and compresses system logs.'
         '''
         @ivar: description of the program
         @type: str
@@ -189,6 +197,18 @@ class LogrotateOptParser(object):
         # Deprecated options for compatibilty to logrotate
         group = OptionGroup(self.parser, "Deprecated options")
 
+        group.add_option(
+            '--mail',
+            '-m',
+            dest    = "mailcmd",
+            metavar = 'CMD',
+            help    = ( ( 'Should tell %s which command to use '
+                        + 'when mailing logs - not used.' )
+                        %(str(self.prog)) ),
+        )
+
+        self.parser.add_option_group(group)
+
         ######
         # Option group for common options
 
@@ -228,6 +248,20 @@ class LogrotateOptParser(object):
             self.options, self.args = self.parser.parse_args()
             self.parsed = True
 
+        if self.options.force and self.options.configcheck:
+            raise LogrotateOptParserError('Invalid usage of --force and '
+                + '--config-check.')
+
+        if self.args is None:
+            raise LogrotateOptParserError('No configuration file given.')
+
+        if len(self.args) != 1:
+            raise LogrotateOptParserError('Only one configuration file is allowed.')
+
+        if self.options.mailcmd:
+            sys.stderr.write('Usage of --mail is deprecated '
+                + 'in this version.\n\n')
+
 #========================================================================
 
 if __name__ == "__main__":
index c64a75b02db6849770c082a985ef7d53d7766a9a..c570ef9022add1df90f9ef32b98ec73821cf5107 100755 (executable)
@@ -18,6 +18,7 @@ import sys
 import pprint
 
 from LogRotateGetopts import LogrotateOptParser;
+from LogRotateGetopts import LogrotateOptParserError;
 
 revision = '$Revision$'
 revision = re.sub( r'\$', '', revision )
@@ -38,7 +39,12 @@ def main():
         version = __version__,
     )
     pp = pprint.PrettyPrinter(indent=4)
-    opt_parser.getOpts()
+    try:
+        opt_parser.getOpts()
+    except LogrotateOptParserError, e:
+        sys.stderr.write(str(e) + "\n\n")
+        opt_parser.parser.print_help(sys.stderr)
+        sys.exit(1)
 
     print "Options: " + pp.pformat(opt_parser.options)
     print "Arguments: " + pp.pformat(opt_parser.args)