mirror of https://github.com/python/cpython
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.
This commit is contained in:
parent
b69c758f3b
commit
b68ef5081d
|
@ -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)
|
Loading…
Reference in New Issue