Explorar el Código

Fix build_manpage

oz123 hace 10 años
padre
commit
c95b6fceae
Se han modificado 1 ficheros con 18 adiciones y 32 borrados
  1. 18 32
      build_manpage.py

+ 18 - 32
build_manpage.py

@@ -7,20 +7,20 @@
 """
 
 import datetime
-from distutils.command.build import build
 from distutils.core import Command
 from distutils.errors import DistutilsOptionError
-import optparse
 import argparse
 
+
 class build_manpage(Command):
+
     """-O bla.1 --parser pwman:parser_options"""
     description = 'Generate man page from setup().'
 
     user_options = [
         ('output=', 'O', 'output file'),
         ('parser=', None, 'module path to optparser (e.g. mymod:func'),
-        ]
+    ]
 
     def initialize_options(self):
         self.output = None
@@ -36,10 +36,10 @@ class build_manpage(Command):
         try:
             mod = __import__(mod_name, fromlist=fromlist)
             self._parser = getattr(mod, func_name)()
-        except ImportError, err:
-            raise
-        self._parser.formatter = ManPageFormatter()
-        self._parser.formatter.set_parser(self._parser)
+        except ImportError as err:
+            raise err
+
+        self._parser.formatter_class = ManPageFormatter
         self.announce('Writing man page %s' % self.output)
         self._today = datetime.date.today()
 
@@ -61,21 +61,24 @@ class build_manpage(Command):
 
         if isinstance(self._parser, argparse.ArgumentParser):
             self._parser.prog = self.distribution.get_name()
-            synopsis = self._parser.format_usage().split(':',1)[1]
+            synopsis = self._parser.format_usage().split(':', 1)[1]
         else:
             synopsis = self._parser.get_usage()
         if synopsis:
             synopsis = synopsis.replace('%s ' % appname, '')
-            ret.append('.SH SYNOPSIS\n.B %s\n%s\n' % (self._markup(appname),
-                                                      synopsis))
+            ret.append('.SH SYNOPSIS\n \\fB%s\\fR %s\n' % (self._markup(appname),
+                                                           synopsis))
         long_desc = self.distribution.get_long_description()
         if long_desc:
+            long_desc = long_desc.replace('\n', '\n.br\n')
             ret.append('.SH DESCRIPTION\n%s\n' % self._markup(long_desc))
         return ''.join(ret)
 
     def _write_options(self):
         ret = ['.SH OPTIONS\n']
-        ret.append(self._parser.format_option_help())
+        self._parser.formatter_class = ManPageFormatter
+        ret.extend(self._parser.format_help().split('\n', 4)[4:])
+
         return ''.join(ret)
 
     def _write_footer(self):
@@ -88,7 +91,7 @@ class build_manpage(Command):
         homepage = self.distribution.get_url()
         ret.append(('.SH DISTRIBUTION\nThe latest version of %s may '
                     'be downloaded from\n'
-                    '.UR %s\n.UE\n'
+                    '%s\n\n'
                     % (self._markup(appname), self._markup(homepage),)))
         return ''.join(ret)
 
@@ -102,24 +105,8 @@ class build_manpage(Command):
         stream.close()
 
 
-class ManPageArgFormatter(argparse.HelpFormatter):
-    pass
-
-class ManPageFormatter(optparse.HelpFormatter):
-
-    def __init__(self,
-                 indent_increment=2,
-                 max_help_position=24,
-                 width=None,
-                 short_first=1):
-
-        # should be replace with super ?
-        optparse.HelpFormatter.__init__(self, indent_increment,
-                                        max_help_position, width, short_first)
-
-        # argparse.HelpFormatter(indent_increment, max_help_position, width,)
-        # no such option in argparse?                         short_first=1)
-
+class ManPageFormatter(argparse.HelpFormatter):
+    # TODO: Override the correct methods in this class!
     def _markup(self, txt):
         return txt.replace('-', '\\-')
 
@@ -141,5 +128,4 @@ class ManPageFormatter(optparse.HelpFormatter):
         return ''.join(result)
 
 
-#build.sub_commands.append(('build_manpage', None))
-
+#  build.sub_commands.append(('build_manpage', None))