Description: https://bitbucket.org/birkenfeld/sphinx-contrib/pull-request/59/enhance-autoprogram-include-usage-summary/commits

# HG changeset patch
# User Michael R. Crusoe <mcrusoe@msu.edu>
# Date 1396309865 14400
# Node ID 4f83b4da94182a4145b2e1814766be610c19953c
# Parent  28cbb91d0783dbb578edd51fcac89ee402c75f28
autoprogram: set the prog name on the parser object

Now that we use parser.format_usage()

# HG changeset patch
# User Michael R. Crusoe <mcrusoe@msu.edu>
# Date 1396275605 14400
# Node ID 28cbb91d0783dbb578edd51fcac89ee402c75f28
# Parent  648ec7f6e344d6f8fac3dfdedb2db7bbcfefe75d
autoprogram: include usage output

# HG changeset patch
# User Michael R. Crusoe <mcrusoe@msu.edu>
# Date 1395853706 14400
# Node ID 648ec7f6e344d6f8fac3dfdedb2db7bbcfefe75d
# Parent  d09ede7767254a9a00c4b3a79a67e97c35cbb178
Print the arg type instead of the destination if there is no metavar
Silence pylint warnings

# HG changeset patch
# User Michael R. Crusoe <mcrusoe@msu.edu>
# Date 1395786893 14400
# Node ID d09ede7767254a9a00c4b3a79a67e97c35cbb178
# Parent  2904c5cc58c52db4569f802b46ed9358989ad2ab
autoprogram: include the epilog

--- a/sphinxcontrib/autoprogram.py
+++ b/sphinxcontrib/autoprogram.py
@@ -8,6 +8,7 @@
     :license: BSD, see LICENSE for details.
 
 """
+# pylint: disable=protected-access,missing-docstring
 import argparse
 import collections
 try:
@@ -48,7 +49,7 @@
                 names = list(arg.option_strings)
             desc = (arg.help or '') % {'default': arg.default}
             options.append((names, desc))
-    yield command, options, parser.description or ''
+    yield command, options, parser.description, parser.epilog or ''
     if parser._subparsers:
         choices = parser._subparsers._actions[-1].choices.items()
         if not (hasattr(collections, 'OrderedDict') and
@@ -80,10 +81,10 @@
     def make_rst(self):
         import_name, = self.arguments
         parser = import_object(import_name or '__undefined__')
-        prog = self.options.get('prog', parser.prog)
-        for commands, options, desc in scan_programs(parser):
+        parser.prog = self.options.get('prog', parser.prog)
+        for commands, options, desc, epilog in scan_programs(parser):
             command = ' '.join(commands)
-            title = '{0} {1}'.format(prog, command).rstrip()
+            title = '{0} {1}'.format(parser.prog, command).rstrip()
             yield ''
             yield '.. program:: ' + title
             yield ''
@@ -92,11 +93,16 @@
             yield ''
             yield desc
             yield ''
+            yield parser.format_usage()
+            yield ''
             for option_strings, help_ in options:
                 yield '.. option:: {0}'.format(', '.join(option_strings))
                 yield ''
                 yield '   ' + help_.replace('\n', '   \n')
                 yield ''
+            yield ''
+            for line in epilog.splitlines():
+                yield line
 
     def run(self):
         node = nodes.section()
@@ -142,7 +148,7 @@
         programs = list(programs)
         self.assertEqual(1, len(programs))
         pair, = programs
-        program, options, desc = pair
+        program, options, desc, epilog = pair
         self.assertEqual([], program)
         self.assertEqual('Process some integers.', desc)
         self.assertEqual(4, len(options))
@@ -180,7 +186,7 @@
         programs = list(programs)
         self.assertEqual(3, len(programs))
         # main
-        program, options, desc = programs[0]
+        program, options, desc, epilog = programs[0]
         self.assertEqual([], program)
         self.assertEqual('Process some integers.', desc)
         self.assertEqual(1, len(options))
@@ -190,7 +196,7 @@
             options[0]
         )
         # max
-        program, options, desc = programs[1]
+        program, options, desc, epilog = programs[1]
         self.assertEqual(['max'], program)
         self.assertEqual('Find the max.', desc)
         self.assertEqual(2, len(options))
@@ -202,7 +208,7 @@
             options[1]
         )
         # sum
-        program, options, desc = programs[2]
+        program, options, desc, epilog = programs[2]
         self.assertEqual(['sum'], program)
         self.assertEqual('Sum the integers.', desc)
         self.assertEqual(2, len(options))
