mirror of https://github.com/python/cpython.git
79 lines
2.7 KiB
Plaintext
79 lines
2.7 KiB
Plaintext
|
#!/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)
|