summaryrefslogtreecommitdiffstats
path: root/Tools
diff options
context:
space:
mode:
authorAndrew M. Kuchling <amk@amk.ca>2001-02-28 20:55:10 (GMT)
committerAndrew M. Kuchling <amk@amk.ca>2001-02-28 20:55:10 (GMT)
commitb68ef5081dcdd75c38f84c451038785df44a0c42 (patch)
tree0ea0345a15f9acc23220d787123efb660598d3a9 /Tools
parentb69c758f3bbbc9534d6a45b9b3cf5d14cbc3d48c (diff)
downloadcpython-b68ef5081dcdd75c38f84c451038785df44a0c42.zip
cpython-b68ef5081dcdd75c38f84c451038785df44a0c42.tar.gz
cpython-b68ef5081dcdd75c38f84c451038785df44a0c42.tar.bz2
Add script form of pydoc so that it's present in beta1. Currently
this just copies the __name__=='__main__' logic from pydoc.py. ?!ng can decide whether he wants to create a main() in pydoc, or rip it out of pydoc.py completely.
Diffstat (limited to 'Tools')
-rwxr-xr-xTools/scripts/pydoc78
1 files changed, 78 insertions, 0 deletions
diff --git a/Tools/scripts/pydoc b/Tools/scripts/pydoc
new file mode 100755
index 0000000..a1dcbcc
--- /dev/null
+++ b/Tools/scripts/pydoc
@@ -0,0 +1,78 @@
+#!/usr/bin/env python
+
+# -------------------------------------------------- command-line interface
+
+import sys, os, pydoc
+from string import lower
+
+if __name__ == '__main__':
+ import getopt
+ class BadUsage: pass
+
+ try:
+ opts, args = getopt.getopt(sys.argv[1:], 'k:p:w')
+ writing = 0
+
+ for opt, val in opts:
+ if opt == '-k':
+ pydoc.apropos(lower(val))
+ break
+ if opt == '-p':
+ try:
+ port = int(val)
+ except ValueError:
+ raise BadUsage
+ def ready(port=port):
+ print 'server ready at http://127.0.0.1:%d/' % port
+ pydoc.serve(('127.0.0.1', port), ready)
+ break
+ if opt == '-w':
+ if not args: raise BadUsage
+ writing = 1
+ else:
+ if args:
+ for arg in args:
+ try:
+ if os.path.isfile(arg):
+ arg = pydoc.importfile(arg)
+ if writing:
+ if os.path.isdir(arg): pydoc.writedocs(arg)
+ else: pydoc.writedoc(arg)
+ else: pydoc.man(arg)
+ except pydoc.DocImportError, value:
+ print 'problem in %s - %s' % (
+ value.filename, value.args)
+ else:
+ if sys.platform in ['mac', 'win', 'win32', 'nt']:
+ # GUI platforms with threading
+ import threading
+ ready = threading.Event()
+ address = ('127.0.0.1', 12346)
+ threading.Thread(
+ target=pydoc.serve, args=(address, ready.set)).start()
+ ready.wait()
+ import webbrowser
+ webbrowser.open('http://127.0.0.1:12346/')
+ else:
+ raise BadUsage
+
+ except (getopt.error, BadUsage):
+ print """%s <name> ...
+ Show documentation on something.
+ <name> may be the name of a Python function, module, or package,
+ or a dotted reference to a class or function within a module or
+ module in a package, or the filename of a Python module to import.
+
+%s -k <keyword>
+ Search for a keyword in the synopsis lines of all modules.
+
+%s -p <port>
+ Start an HTTP server on the given port on the local machine.
+
+%s -w <module> ...
+ Write out the HTML documentation for a module to a file.
+
+%s -w <moduledir>
+ Write out the HTML documentation for all modules in the tree
+ under a given directory to files in the current directory.
+""" % ((sys.argv[0],) * 5)