diff options
Diffstat (limited to 'buildbot/docs/epyrun')
-rw-r--r-- | buildbot/docs/epyrun | 195 |
1 files changed, 0 insertions, 195 deletions
diff --git a/buildbot/docs/epyrun b/buildbot/docs/epyrun deleted file mode 100644 index db60b5a..0000000 --- a/buildbot/docs/epyrun +++ /dev/null @@ -1,195 +0,0 @@ -#!/usr/bin/env python - -import sys -import os - -from twisted.python import reflect -from twisted.internet import reactor - -# epydoc -import epydoc -assert epydoc.__version__[0] == '2', "You need epydoc 2.x!" -from epydoc.cli import cli - -class FakeModule: - - def __init__(self, name, level): - self.__level = level - self.__name__ = name - - def __repr__(self): - return '<Fake %s>' % self.__name__ - __str__ = __repr__ - - def __nonzero__(self): - return 1 - - def __call__(self, *args, **kw): - pass #print 'Called:', args - - def __getattr__(self, attr): - if self.__level == 0: - raise AttributeError - return FakeModule(self.__name__+'.'+attr, self.__level-1) - - def __cmp__(self, other): - if not hasattr(other, '___name__'): - return -1 - return cmp(self.__name__, other.__name__) - - -def fakeOut(modname): - modpath = modname.split('.') - prevmod = None - for m in range(len(modpath)): - mp = '.'.join(modpath[:m+1]) - nm = FakeModule(mp, 4) - if prevmod: - setattr(prevmod, modpath[m], nm) - sys.modules[mp] = nm - prevmod = nm - -#fakeOut("twisted") - -# HACK: Another "only doc what we tell you". We don't want epydoc to -# automatically recurse into subdirectories: "twisted"'s presence was -# causing "twisted/test" to be docced, even thought we explicitly -# didn't put any twisted/test in our modnames. - -from epydoc import imports -orig_find_modules = imports.find_modules - -import re - -def find_modules(dirname): - if not os.path.isdir(dirname): return [] - found_init = 0 - modules = {} - dirs = [] - - # Search for directories & modules, and check for __init__.py. - # Don't include duplicates (like foo.py and foo.pyc), and give - # precedance to the .py files. - for file in os.listdir(dirname): - filepath = os.path.join(dirname, file) - if os.path.isdir(filepath): dirs.append(filepath) - elif not re.match(r'\w+.py.?', file): - continue # Ignore things like ".#foo.py" or "a-b.py" - elif file[-3:] == '.py': - modules[file] = os.path.join(dirname, file) - if file == '__init__.py': found_init = 1 - elif file[-4:-1] == '.py': - modules.setdefault(file[:-1], file) - if file[:-1] == '__init__.py': found_init = 1 - modules = modules.values() - - # If there was no __init__.py, then this isn't a package - # directory; return nothing. - if not found_init: return [] - - # Recurse to the child directories. - # **twisted** here's the change: commented next line out - #for d in dirs: modules += find_modules(d) - return modules - -imports.find_modules = find_modules - - - -# Now, set up the list of modules for epydoc to document -modnames = [] -def addMod(arg, path, files): - for fn in files: - file = os.path.join(path, fn).replace('%s__init__'%os.sep, '') - if file[-3:] == '.py' and not file.count('%stest%s' % (os.sep,os.sep)): - modName = file[:-3].replace(os.sep,'.') - try: - #print 'pre-loading', modName - reflect.namedModule(modName) - except ImportError, e: - print 'import error:', modName, e - except Exception, e: - print 'other error:', modName, e - else: - modnames.append(modName) - -document_all = True # are we doing a full build? -names = ['buildbot/'] #default, may be overriden below - -#get list of modules/pkgs on cmd-line -try: - i = sys.argv.index("--modules") -except: - pass -else: - names = sys.argv[i+1:] - document_all = False - sys.argv[i:] = [] - #sanity check on names - for i in range(len(names)): - try: - j = names[i].rindex('buildbot/') - except: - raise SystemExit, 'You can only specify buildbot modules or packages' - else: - #strip off any leading directories before the 'twisted/' - #dir. this makes it easy to specify full paths, such as - #from TwistedEmacs - names[i] = names[i][j:] - - old_out_dir = "html" - #if -o was specified, we need to change it to point to a tmp dir - #otherwise add our own -o option - try: - i = sys.argv.index('-o') - old_out_dir = sys.argv[i+1] - try: - os.mkdir(tmp_dir) - except OSError: - pass - sys.argv[i+1] = tmp_dir - except ValueError: - sys.argv[1:1] = ['-o', tmp_dir] - -osrv = sys.argv -sys.argv=["IGNORE"] - -for name in names: - if name.endswith(".py"): - # turn it in to a python module name - name = name[:-3].replace(os.sep, ".") - try: - reflect.namedModule(name) - except ImportError: - print 'import error:', name - except: - print 'other error:', name - else: - modnames.append(name) - else: #assume it's a dir - os.path.walk(name, addMod, None) - -sys.argv = osrv - -if 'buildbot.test' in modnames: - modnames.remove('buildbot.test') -##if 'twisted' in modnames: -## modnames.remove('twisted') - -sys.argv.extend(modnames) - -import buildbot - - -sys.argv[1:1] = [ - '-n', 'BuildBot %s' % buildbot.version, - '-u', 'http://buildbot.sourceforge.net/', '--no-private'] - -# Make it easy to profile epyrun -if 0: - import profile - profile.run('cli()', 'epyrun.prof') -else: - cli() - -print 'Done!' |