[Python-checkins] CVS: python/dist/src/Tools/scripts pydoc,NONE,1.1

A.M. Kuchling akuchling@users.sourceforge.net
Wed, 28 Feb 2001 12:55:12 -0800


Update of /cvsroot/python/python/dist/src/Tools/scripts
In directory usw-pr-cvs1:/tmp/cvs-serv19974

Added Files:
	pydoc 
Log Message:
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.


--- NEW FILE: pydoc ---
#!/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)