annotate autobot/projects/__init__.py @ 131:a14d466c843b

fix syntax error and note import errors in projects
author Jeff Hammel <jhammel@mozilla.com>
date Sun, 23 Jan 2011 11:15:43 -0800
parents a1568668175c
children 1abbe826d0f3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
28
5ce65c535472 add a docstring and other stubs to projects
Jeff Hammel <jhammel@mozilla.com>
parents: 19
diff changeset
1 """
5ce65c535472 add a docstring and other stubs to projects
Jeff Hammel <jhammel@mozilla.com>
parents: 19
diff changeset
2 projects that need some testing:
5ce65c535472 add a docstring and other stubs to projects
Jeff Hammel <jhammel@mozilla.com>
parents: 19
diff changeset
3
70
f8dccf3377d9 update documentation
Jeff Hammel <jhammel@mozilla.com>
parents: 59
diff changeset
4 * logparser [WORKING]
131
a14d466c843b fix syntax error and note import errors in projects
Jeff Hammel <jhammel@mozilla.com>
parents: 71
diff changeset
5 * autobot [IN FLIGHT]
70
f8dccf3377d9 update documentation
Jeff Hammel <jhammel@mozilla.com>
parents: 59
diff changeset
6 * mozmill [IN FLIGHT]
f8dccf3377d9 update documentation
Jeff Hammel <jhammel@mozilla.com>
parents: 59
diff changeset
7 * devicemanager [IN FLIGHT]
f8dccf3377d9 update documentation
Jeff Hammel <jhammel@mozilla.com>
parents: 59
diff changeset
8 * profilemanager [IN FLIGHT]
29
0f3737cfa0fc format docstring
Jeff Hammel <jhammel@mozilla.com>
parents: 28
diff changeset
9 * firebug [TODO]
0f3737cfa0fc format docstring
Jeff Hammel <jhammel@mozilla.com>
parents: 28
diff changeset
10 * jetpack thing [TODO]
28
5ce65c535472 add a docstring and other stubs to projects
Jeff Hammel <jhammel@mozilla.com>
parents: 19
diff changeset
11 """
5ce65c535472 add a docstring and other stubs to projects
Jeff Hammel <jhammel@mozilla.com>
parents: 19
diff changeset
12
59
e66165f2f31b complete automagic imports
Jeff Hammel <jhammel@mozilla.com>
parents: 38
diff changeset
13 import imp
28
5ce65c535472 add a docstring and other stubs to projects
Jeff Hammel <jhammel@mozilla.com>
parents: 19
diff changeset
14 import os
131
a14d466c843b fix syntax error and note import errors in projects
Jeff Hammel <jhammel@mozilla.com>
parents: 71
diff changeset
15 import sys
59
e66165f2f31b complete automagic imports
Jeff Hammel <jhammel@mozilla.com>
parents: 38
diff changeset
16 from buildbot.process.factory import BuildFactory
10
9bda5ada5dca start on a dict of projects
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
17 from logparser import TestLogParserFactory
31
7a33d84b38e5 add mozmill to the dictionary of factories
Jeff Hammel <jhammel@mozilla.com>
parents: 29
diff changeset
18 from mozmill import TestMozmillFactory
59
e66165f2f31b complete automagic imports
Jeff Hammel <jhammel@mozilla.com>
parents: 38
diff changeset
19
e66165f2f31b complete automagic imports
Jeff Hammel <jhammel@mozilla.com>
parents: 38
diff changeset
20 # available factories::
71
a1568668175c make the autobot project possibly do something
Jeff Hammel <jhammel@mozilla.com>
parents: 70
diff changeset
21 # import these automagically; requires non-zipped eggs
59
e66165f2f31b complete automagic imports
Jeff Hammel <jhammel@mozilla.com>
parents: 38
diff changeset
22 factories = {}
e66165f2f31b complete automagic imports
Jeff Hammel <jhammel@mozilla.com>
parents: 38
diff changeset
23 descriptions = {}
34
206467b6f61f * cleanup a bit in projects and start featuring autodiscovery
Jeff Hammel <jhammel@mozilla.com>
parents: 32
diff changeset
24 here = os.path.dirname(os.path.abspath(__file__))
206467b6f61f * cleanup a bit in projects and start featuring autodiscovery
Jeff Hammel <jhammel@mozilla.com>
parents: 32
diff changeset
25 packages = [os.path.join(here, path)
206467b6f61f * cleanup a bit in projects and start featuring autodiscovery
Jeff Hammel <jhammel@mozilla.com>
parents: 32
diff changeset
26 for path in os.listdir(here)
206467b6f61f * cleanup a bit in projects and start featuring autodiscovery
Jeff Hammel <jhammel@mozilla.com>
parents: 32
diff changeset
27 if os.path.isdir(os.path.join(here, path))]
59
e66165f2f31b complete automagic imports
Jeff Hammel <jhammel@mozilla.com>
parents: 38
diff changeset
28 packages = [os.path.basename(package) for package in packages
34
206467b6f61f * cleanup a bit in projects and start featuring autodiscovery
Jeff Hammel <jhammel@mozilla.com>
parents: 32
diff changeset
29 if os.path.exists(os.path.join(package, '__init__.py'))]
59
e66165f2f31b complete automagic imports
Jeff Hammel <jhammel@mozilla.com>
parents: 38
diff changeset
30 for package in packages:
e66165f2f31b complete automagic imports
Jeff Hammel <jhammel@mozilla.com>
parents: 38
diff changeset
31 try:
e66165f2f31b complete automagic imports
Jeff Hammel <jhammel@mozilla.com>
parents: 38
diff changeset
32 module = imp.load_package('autobot.projects.'+package, imp.find_module(package, [here])[1])
e66165f2f31b complete automagic imports
Jeff Hammel <jhammel@mozilla.com>
parents: 38
diff changeset
33 except:
131
a14d466c843b fix syntax error and note import errors in projects
Jeff Hammel <jhammel@mozilla.com>
parents: 71
diff changeset
34 print >> sys.stderr, "Could not import autobot.projects." + package
59
e66165f2f31b complete automagic imports
Jeff Hammel <jhammel@mozilla.com>
parents: 38
diff changeset
35 continue
e66165f2f31b complete automagic imports
Jeff Hammel <jhammel@mozilla.com>
parents: 38
diff changeset
36 for attr in dir(module):
e66165f2f31b complete automagic imports
Jeff Hammel <jhammel@mozilla.com>
parents: 38
diff changeset
37 try:
e66165f2f31b complete automagic imports
Jeff Hammel <jhammel@mozilla.com>
parents: 38
diff changeset
38 _obj = getattr(module, attr)
e66165f2f31b complete automagic imports
Jeff Hammel <jhammel@mozilla.com>
parents: 38
diff changeset
39 if issubclass(_obj, BuildFactory) and _obj.__module__.startswith('autobot.projects.'):
e66165f2f31b complete automagic imports
Jeff Hammel <jhammel@mozilla.com>
parents: 38
diff changeset
40 factories[package] = _obj
e66165f2f31b complete automagic imports
Jeff Hammel <jhammel@mozilla.com>
parents: 38
diff changeset
41 descriptions[package] = (getattr(_obj, '__doc__', attr) or attr).strip()
e66165f2f31b complete automagic imports
Jeff Hammel <jhammel@mozilla.com>
parents: 38
diff changeset
42 except TypeError:
e66165f2f31b complete automagic imports
Jeff Hammel <jhammel@mozilla.com>
parents: 38
diff changeset
43 continue
10
9bda5ada5dca start on a dict of projects
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
44