]> Frank Brehm's Git Trees - my-stuff/py-logrotate.git/commitdiff
Mit option parser weitergemacht
authorFrank Brehm <frank@brehm-online.com>
Sat, 16 Apr 2011 08:36:53 +0000 (08:36 +0000)
committerFrank Brehm <frank@brehm-online.com>
Sat, 16 Apr 2011 08:36:53 +0000 (08:36 +0000)
git-svn-id: http://svn.brehm-online.com/svn/my-stuff/python/PyLogrotate/trunk@199 ec8d2aa5-1599-4edb-8739-2b3a1bc399aa

LogRotateGetopts.py
logrotate.py

index de7e0823f59f1a873b707b1575a6b781046d307e..06f82e7d21fd54f4a36ab2a5f1a8a4964d75be95 100755 (executable)
@@ -18,6 +18,7 @@ import sys
 
 from optparse import OptionError
 from optparse import OptionParser
+from optparse import OptionGroup
 from optparse import OptionConflictError
 
 
@@ -46,8 +47,6 @@ class LogrotateOptParser(object):
     #-------------------------------------------------------
     def __init__( self, prog = '%prog',
                         version = None,
-                        description = 'rotates and compresses system logs',
-                        usage = 'Usage: %s [options]',
     ):
         '''
         Costructor.
@@ -55,10 +54,6 @@ class LogrotateOptParser(object):
         @type prog: str
         @param version: The version string to use
         @type version: str
-        @param description: The Description the process should use
-        @type description: str
-        @param usage: An usage string fro the help screen, must have a '%s' for the program name
-        @type usage: str
         @return: None
         '''
 
@@ -68,19 +63,19 @@ class LogrotateOptParser(object):
         @type: str
         '''
 
-        self.version = __version__
+        self.version = version
         '''
         @ivar: The version string to use
         @type: str
         '''
 
-        self.description = description
+        self.description = 'rotates and compresses system logs'
         '''
         @ivar: description of the program
         @type: str
         '''
 
-        self.usage = usage %(prog)
+        self.usage = "Usage: %s [options] <configfile>" %(prog)
         '''
         @ivar: the usage string in getopt help output
         @type: str
@@ -109,10 +104,11 @@ class LogrotateOptParser(object):
             self.version = version
 
         self.parser = OptionParser(
-                prog        = self.prog,
-                version     = self.version,
-                description = self.description,
-                usage       = self.usage
+                prog             = self.prog,
+                version          = self.version,
+                description      = self.description,
+                usage            = self.usage,
+                conflict_handler = "resolve",
         )
         '''
         @ivar: the working OptionParser Object
@@ -128,6 +124,12 @@ class LogrotateOptParser(object):
         to the OptionParser object
         '''
 
+        if self.parser.has_option('--help'):
+            self.parser.remove_option('--help')
+
+        if self.parser.has_option('--version'):
+            self.parser.remove_option('--version')
+
         self.parser.add_option(
             '--simulate',
             '--test',
@@ -147,6 +149,73 @@ class LogrotateOptParser(object):
             help    = 'set the verbosity level'
         )
 
+        self.parser.add_option(
+            '--debug',
+            '-d',
+            default = False,
+            action  = 'store_true',
+            dest    = 'debug',
+            help    = "Don't do anything, just test (implies -v and -T)"
+        )
+
+        self.parser.add_option(
+            '--force',
+            '-f',
+            default = False,
+            action  = 'store_true',
+            dest    = 'force',
+            help    = "Force file rotation"
+        )
+
+        self.parser.add_option(
+            '--config-check',
+            '-c',
+            default = False,
+            action  = 'store_true',
+            dest    = 'configcheck',
+            help    = "Checks only the given configuration file and does "
+                      + "nothing. Conflicts with -f",
+        )
+
+        self.parser.add_option(
+            '--state',
+            '-s',
+            dest    = "statefile",
+            metavar = 'FILE',
+            help    = 'Path of state file (different to configuration)',
+        )
+
+        ######
+        # Deprecated options for compatibilty to logrotate
+        group = OptionGroup(self.parser, "Deprecated options")
+
+        ######
+        # Option group for common options
+
+        group = OptionGroup(self.parser, "Common options")
+
+        group.add_option(
+            '-h',
+            '-?',
+            '--help',
+            '--usage',
+            default = False,
+            action  = 'help',
+            dest    = 'help',
+            help    = 'shows a help message and exit'
+        )
+
+        group.add_option(
+            '-V',
+            '--version',
+            default = False,
+            action  = 'version',
+            dest    = 'version',
+            help    = 'shows the version number of the program and exit',
+        )
+
+        self.parser.add_option_group(group)
+
     #----------------------------------------------------------------------
     def getOpts(self):
         '''
index e165a2257669300804a30f734cae226cc51ef91c..c64a75b02db6849770c082a985ef7d53d7766a9a 100755 (executable)
@@ -14,6 +14,8 @@
 '''
 
 import re
+import sys
+import pprint
 
 from LogRotateGetopts import LogrotateOptParser;
 
@@ -30,8 +32,17 @@ __license__    = 'GPL3'
 
 #-----------------------------------------------------------------
 def main():
-    print "Lege los ..."
-    pass
+
+    opt_parser = LogrotateOptParser(
+        prog = "logrotate",
+        version = __version__,
+    )
+    pp = pprint.PrettyPrinter(indent=4)
+    opt_parser.getOpts()
+
+    print "Options: " + pp.pformat(opt_parser.options)
+    print "Arguments: " + pp.pformat(opt_parser.args)
+
 
 #========================================================================