1 from buildbot.util import now, safeTranslate
2
3
5 """
6
7 Used in config files to specify a builder - this can be subclassed by users
8 to add extra config args, set defaults, or whatever. It is converted to a
9 dictionary for consumption by the buildmaster at config time.
10
11 """
12
13 - def __init__(self,
14 name=None,
15 slavename=None,
16 slavenames=None,
17 builddir=None,
18 slavebuilddir=None,
19 factory=None,
20 category=None,
21 nextSlave=None,
22 nextBuild=None,
23 locks=None,
24 env=None):
25
26
27 if not name or type(name) is not str:
28 raise ValueError("builder's name is required")
29 if name[0] == '_':
30 raise ValueError("builder names must not start with an "
31 "underscore: " + name)
32 self.name = name
33
34
35 if factory is None:
36 raise ValueError("builder's factory is required")
37 self.factory = factory
38
39
40
41 if type(slavenames) is str:
42 slavenames = [ slavenames ]
43 if slavenames:
44 if type(slavenames) is not list:
45 raise TypeError("slavenames must be a list or a string")
46 else:
47 slavenames = []
48 if slavename:
49 if type(slavename) != str:
50 raise TypeError("slavename must be a string")
51 slavenames = slavenames + [ slavename ]
52 if not slavenames:
53 raise ValueError("at least one slavename is required")
54 self.slavenames = slavenames
55
56
57 if builddir is None:
58 builddir = safeTranslate(name)
59 self.builddir = builddir
60
61
62 if slavebuilddir is None:
63 slavebuilddir = builddir
64 self.slavebuilddir = slavebuilddir
65
66
67 self.category = category
68 self.nextSlave = nextSlave
69 self.nextBuild = nextBuild
70 self.locks = locks
71 self.env = env
72
74 rv = {
75 'name': self.name,
76 'slavenames': self.slavenames,
77 'factory': self.factory,
78 'builddir': self.builddir,
79 'slavebuilddir': self.slavebuilddir,
80 }
81 if self.category:
82 rv['category'] = self.category
83 if self.nextSlave:
84 rv['nextSlave'] = self.nextSlave
85 if self.nextBuild:
86 rv['nextBuild'] = self.nextBuild
87 if self.locks:
88 rv['locks'] = self.locks
89 if self.env:
90 rv['env'] = self.env
91 return rv
92