Mercurial > hg > autobot
annotate autobot/template.py @ 257:9d5ec533e8df
use a test channel for the normal case
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Wed, 28 Dec 2011 13:10:31 -0800 |
parents | 1a4cb5ae38e2 |
children | 8ed63380052e |
rev | line source |
---|---|
1 | 1 #!/usr/bin/env python |
2 | |
3 """ | |
3 | 4 templates for the A*Team's buildbot |
1 | 5 """ |
6 | |
12
848569b7f91a
use subdirectories for the master and slave
Jeff Hammel <jhammel@mozilla.com>
parents:
11
diff
changeset
|
7 import os |
68
fbd4a34d8e42
make project creation template work
Jeff Hammel <jhammel@mozilla.com>
parents:
67
diff
changeset
|
8 import string |
1 | 9 import sys |
6
4ba6ba323871
stub out invocation of the template; this should eventually move to its own class, as we will want to subclass MakeItSoCLI, /me thinks
Jeff Hammel <jhammel@mozilla.com>
parents:
5
diff
changeset
|
10 from makeitso.cli import MakeItSoCLI |
23
a32a7055f3e6
combine variables for buildbot master+slave
Jeff Hammel <jhammel@mozilla.com>
parents:
22
diff
changeset
|
11 from makeitso.template import assemble |
4
eb289a46f4d3
make buildbot master template look close to what it should
Jeff Hammel <jhammel@mozilla.com>
parents:
3
diff
changeset
|
12 from makeitso.template import MakeItSoTemplate |
eb289a46f4d3
make buildbot master template look close to what it should
Jeff Hammel <jhammel@mozilla.com>
parents:
3
diff
changeset
|
13 from makeitso.template import Variable |
59
e66165f2f31b
complete automagic imports
Jeff Hammel <jhammel@mozilla.com>
parents:
46
diff
changeset
|
14 from projects import descriptions |
16
9ad3a9e220bc
get factory from command line
Jeff Hammel <jhammel@mozilla.com>
parents:
13
diff
changeset
|
15 from projects import factories |
41
42ef457708de
stub out adding factories to our specialty CLI class
Jeff Hammel <jhammel@mozilla.com>
parents:
37
diff
changeset
|
16 from StringIO import StringIO |
1 | 17 |
17
baee795ad6df
stub out actually calling buildbot
Jeff Hammel <jhammel@mozilla.com>
parents:
16
diff
changeset
|
18 try: |
baee795ad6df
stub out actually calling buildbot
Jeff Hammel <jhammel@mozilla.com>
parents:
16
diff
changeset
|
19 from subprocess import check_call as call |
baee795ad6df
stub out actually calling buildbot
Jeff Hammel <jhammel@mozilla.com>
parents:
16
diff
changeset
|
20 except ImportError: |
baee795ad6df
stub out actually calling buildbot
Jeff Hammel <jhammel@mozilla.com>
parents:
16
diff
changeset
|
21 from subprocess import call |
baee795ad6df
stub out actually calling buildbot
Jeff Hammel <jhammel@mozilla.com>
parents:
16
diff
changeset
|
22 |
198
1a50b63c73a3
template now uses the slave os
Jeff Hammel <jhammel@mozilla.com>
parents:
190
diff
changeset
|
23 # default OS type |
1a50b63c73a3
template now uses the slave os
Jeff Hammel <jhammel@mozilla.com>
parents:
190
diff
changeset
|
24 # XXX this should use MozInfo when that's ready |
1a50b63c73a3
template now uses the slave os
Jeff Hammel <jhammel@mozilla.com>
parents:
190
diff
changeset
|
25 os_type=None |
1a50b63c73a3
template now uses the slave os
Jeff Hammel <jhammel@mozilla.com>
parents:
190
diff
changeset
|
26 if sys.platform.startswith('linux'): |
1a50b63c73a3
template now uses the slave os
Jeff Hammel <jhammel@mozilla.com>
parents:
190
diff
changeset
|
27 os_type = 'linux' |
1a50b63c73a3
template now uses the slave os
Jeff Hammel <jhammel@mozilla.com>
parents:
190
diff
changeset
|
28 elif sys.platform.startswith('darwin'): |
1a50b63c73a3
template now uses the slave os
Jeff Hammel <jhammel@mozilla.com>
parents:
190
diff
changeset
|
29 os_type = 'mac' |
1a50b63c73a3
template now uses the slave os
Jeff Hammel <jhammel@mozilla.com>
parents:
190
diff
changeset
|
30 elif sys.platform.startswith('win'): |
1a50b63c73a3
template now uses the slave os
Jeff Hammel <jhammel@mozilla.com>
parents:
190
diff
changeset
|
31 os_type = 'win' |
1a50b63c73a3
template now uses the slave os
Jeff Hammel <jhammel@mozilla.com>
parents:
190
diff
changeset
|
32 |
62
2a5fa6876e48
update template to conform to the new CLI
Jeff Hammel <jhammel@mozilla.com>
parents:
59
diff
changeset
|
33 def print_descriptions(): |
42
6981dcad3b2c
--list-factories now works
Jeff Hammel <jhammel@mozilla.com>
parents:
41
diff
changeset
|
34 """print factory descriptions""" |
6981dcad3b2c
--list-factories now works
Jeff Hammel <jhammel@mozilla.com>
parents:
41
diff
changeset
|
35 |
6981dcad3b2c
--list-factories now works
Jeff Hammel <jhammel@mozilla.com>
parents:
41
diff
changeset
|
36 buffer = StringIO() |
190
6b0587a217d3
nicer printing for --list-factories
Jeff Hammel <jhammel@mozilla.com>
parents:
155
diff
changeset
|
37 print >> buffer, 'Factories::\n' |
42
6981dcad3b2c
--list-factories now works
Jeff Hammel <jhammel@mozilla.com>
parents:
41
diff
changeset
|
38 for key in sorted(factories.keys()): |
6981dcad3b2c
--list-factories now works
Jeff Hammel <jhammel@mozilla.com>
parents:
41
diff
changeset
|
39 print >> buffer, '%s:' % key |
190
6b0587a217d3
nicer printing for --list-factories
Jeff Hammel <jhammel@mozilla.com>
parents:
155
diff
changeset
|
40 print >> buffer, descriptions[key].rstrip() |
42
6981dcad3b2c
--list-factories now works
Jeff Hammel <jhammel@mozilla.com>
parents:
41
diff
changeset
|
41 print >> buffer |
190
6b0587a217d3
nicer printing for --list-factories
Jeff Hammel <jhammel@mozilla.com>
parents:
155
diff
changeset
|
42 return buffer.getvalue().strip() |
42
6981dcad3b2c
--list-factories now works
Jeff Hammel <jhammel@mozilla.com>
parents:
41
diff
changeset
|
43 |
6981dcad3b2c
--list-factories now works
Jeff Hammel <jhammel@mozilla.com>
parents:
41
diff
changeset
|
44 |
1 | 45 class AutobotMasterTemplate(MakeItSoTemplate): |
46 name = 'autobot-master' | |
4
eb289a46f4d3
make buildbot master template look close to what it should
Jeff Hammel <jhammel@mozilla.com>
parents:
3
diff
changeset
|
47 description = 'template for the autotools buildbot master' |
12
848569b7f91a
use subdirectories for the master and slave
Jeff Hammel <jhammel@mozilla.com>
parents:
11
diff
changeset
|
48 templates = [os.path.join('template', 'master')] |
207
dc56c0de73bc
name the slave to the os by default
Jeff Hammel <jhammel@mozilla.com>
parents:
198
diff
changeset
|
49 vars = [Variable('slave', 'buildslave name', os_type or 'slave'), |
198
1a50b63c73a3
template now uses the slave os
Jeff Hammel <jhammel@mozilla.com>
parents:
190
diff
changeset
|
50 Variable('os', 'buildslave os (win, mac, linux)', os_type), |
5
b7c521f53bda
document what the passwd variable is for
Jeff Hammel <jhammel@mozilla.com>
parents:
4
diff
changeset
|
51 Variable('passwd', 'buildslave password', default='passwd'), |
20
30ec24255ce9
stub out having a slave template too
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
52 Variable('slaveport', 'port to talk to slaves on', default=9010, cast=int), |
249
76b4f58df3ee
* enable a public HTML waterfall; * try to add an irc bot
Jeff Hammel <jhammel@mozilla.com>
parents:
240
diff
changeset
|
53 Variable('htmlport', 'port for waterfall display', default=8010, cast=int), |
250 | 54 Variable('publichtmlport', 'port for public waterfall display', default=8011, cast=int), |
55 Variable('botname', 'name of IRC bot', default='autobot'), | |
251 | 56 Variable('ircHost', 'IRC host', default='irc.mozilla.org'), |
257
9d5ec533e8df
use a test channel for the normal case
Jeff Hammel <jhammel@mozilla.com>
parents:
252
diff
changeset
|
57 Variable('ircChannels', 'channels for the IRC bot', default='#ateam-test') # use #ateam in production |
252 | 58 ] |
4
eb289a46f4d3
make buildbot master template look close to what it should
Jeff Hammel <jhammel@mozilla.com>
parents:
3
diff
changeset
|
59 |
73
d033843da35a
templates work again maybe
Jeff Hammel <jhammel@mozilla.com>
parents:
69
diff
changeset
|
60 def pre(self, variables, output): |
66
cbcb96142ed6
stubs towards specifying multiple factories
Jeff Hammel <jhammel@mozilla.com>
parents:
62
diff
changeset
|
61 factory = variables.get('factories') |
13 | 62 if factory: |
66
cbcb96142ed6
stubs towards specifying multiple factories
Jeff Hammel <jhammel@mozilla.com>
parents:
62
diff
changeset
|
63 assert(set(factory).issubset(factories.keys())), 'Factory must be one of: ' % ', '.join(factories.keys()) |
13 | 64 elif self.interactive: |
62
2a5fa6876e48
update template to conform to the new CLI
Jeff Hammel <jhammel@mozilla.com>
parents:
59
diff
changeset
|
65 print print_descriptions() |
16
9ad3a9e220bc
get factory from command line
Jeff Hammel <jhammel@mozilla.com>
parents:
13
diff
changeset
|
66 sys.stdout.write('Enter factory: ') |
13 | 67 factory = raw_input() |
68 assert factory in factories, 'Factory must be one of: ' % ', '.join(factories.keys()) | |
66
cbcb96142ed6
stubs towards specifying multiple factories
Jeff Hammel <jhammel@mozilla.com>
parents:
62
diff
changeset
|
69 variables['factories'] = [factory] |
13 | 70 else: |
71 raise AssertionError("No factory provided") | |
1 | 72 |
87 | 73 # stringify for .ini file |
74 variables['factories'] = ' '.join([i for i in variables['factories']]) | |
86
2616a5f49bd3
switch to .ini files for configuration
Jeff Hammel <jhammel@mozilla.com>
parents:
74
diff
changeset
|
75 |
25
785b075be979
post method should work now [untested]
Jeff Hammel <jhammel@mozilla.com>
parents:
24
diff
changeset
|
76 def create(self, output, variables): |
785b075be979
post method should work now [untested]
Jeff Hammel <jhammel@mozilla.com>
parents:
24
diff
changeset
|
77 command = ['buildbot', 'create-master', output] |
785b075be979
post method should work now [untested]
Jeff Hammel <jhammel@mozilla.com>
parents:
24
diff
changeset
|
78 print ' '.join(command) |
785b075be979
post method should work now [untested]
Jeff Hammel <jhammel@mozilla.com>
parents:
24
diff
changeset
|
79 call(command) |
785b075be979
post method should work now [untested]
Jeff Hammel <jhammel@mozilla.com>
parents:
24
diff
changeset
|
80 |
18
016ffd7bfd99
can now actually make a (admittedly non-working) buildmaster
Jeff Hammel <jhammel@mozilla.com>
parents:
17
diff
changeset
|
81 def post(self, variables): |
17
baee795ad6df
stub out actually calling buildbot
Jeff Hammel <jhammel@mozilla.com>
parents:
16
diff
changeset
|
82 """ |
baee795ad6df
stub out actually calling buildbot
Jeff Hammel <jhammel@mozilla.com>
parents:
16
diff
changeset
|
83 called after the template is applied |
baee795ad6df
stub out actually calling buildbot
Jeff Hammel <jhammel@mozilla.com>
parents:
16
diff
changeset
|
84 """ |
26
fdddf883c19d
first successful run of create-autobot script
Jeff Hammel <jhammel@mozilla.com>
parents:
25
diff
changeset
|
85 self.create(self.output, variables) |
17
baee795ad6df
stub out actually calling buildbot
Jeff Hammel <jhammel@mozilla.com>
parents:
16
diff
changeset
|
86 |
66
cbcb96142ed6
stubs towards specifying multiple factories
Jeff Hammel <jhammel@mozilla.com>
parents:
62
diff
changeset
|
87 |
1 | 88 class AutobotSlaveTemplate(MakeItSoTemplate): |
89 name = 'autobot-slave' | |
4
eb289a46f4d3
make buildbot master template look close to what it should
Jeff Hammel <jhammel@mozilla.com>
parents:
3
diff
changeset
|
90 description = 'template for the autotools buildbot slave' |
12
848569b7f91a
use subdirectories for the master and slave
Jeff Hammel <jhammel@mozilla.com>
parents:
11
diff
changeset
|
91 templates = [os.path.join('template', 'slave')] |
20
30ec24255ce9
stub out having a slave template too
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
92 vars = [Variable('master', 'host of the master', default='localhost'), |
207
dc56c0de73bc
name the slave to the os by default
Jeff Hammel <jhammel@mozilla.com>
parents:
198
diff
changeset
|
93 Variable('slave', 'buildslave name', os_type or 'slave'), |
20
30ec24255ce9
stub out having a slave template too
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
94 Variable('passwd', 'buildslave password', default='passwd'), |
30ec24255ce9
stub out having a slave template too
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
95 Variable('slaveport', 'port to talk to slaves on', default=9010)] |
1 | 96 |
25
785b075be979
post method should work now [untested]
Jeff Hammel <jhammel@mozilla.com>
parents:
24
diff
changeset
|
97 def create(self, output, variables): |
785b075be979
post method should work now [untested]
Jeff Hammel <jhammel@mozilla.com>
parents:
24
diff
changeset
|
98 command = ['buildslave', 'create-slave', output, |
132
da7af78edcb5
ensure the slaveport is an int
Jeff Hammel <jhammel@mozilla.com>
parents:
87
diff
changeset
|
99 '%s:%d' % (variables['master'], int(variables['slaveport'])), |
20
30ec24255ce9
stub out having a slave template too
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
100 variables['slave'], |
30ec24255ce9
stub out having a slave template too
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
101 variables['passwd'] ] |
21 | 102 print ' '.join(command) |
103 call(command) | |
25
785b075be979
post method should work now [untested]
Jeff Hammel <jhammel@mozilla.com>
parents:
24
diff
changeset
|
104 |
73
d033843da35a
templates work again maybe
Jeff Hammel <jhammel@mozilla.com>
parents:
69
diff
changeset
|
105 def post(self, variables, output): |
d033843da35a
templates work again maybe
Jeff Hammel <jhammel@mozilla.com>
parents:
69
diff
changeset
|
106 self.create(output, variables) |
25
785b075be979
post method should work now [untested]
Jeff Hammel <jhammel@mozilla.com>
parents:
24
diff
changeset
|
107 |
20
30ec24255ce9
stub out having a slave template too
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
108 |
23
a32a7055f3e6
combine variables for buildbot master+slave
Jeff Hammel <jhammel@mozilla.com>
parents:
22
diff
changeset
|
109 class AutobotTemplate(AutobotMasterTemplate, AutobotSlaveTemplate): |
22
a7e2f5b2a7e9
stub out a combined template for the master + slave
Jeff Hammel <jhammel@mozilla.com>
parents:
21
diff
changeset
|
110 name = 'autobot' |
a7e2f5b2a7e9
stub out a combined template for the master + slave
Jeff Hammel <jhammel@mozilla.com>
parents:
21
diff
changeset
|
111 description = 'template for the autotools buildbot master+slave' |
a7e2f5b2a7e9
stub out a combined template for the master + slave
Jeff Hammel <jhammel@mozilla.com>
parents:
21
diff
changeset
|
112 templates = ['template'] |
23
a32a7055f3e6
combine variables for buildbot master+slave
Jeff Hammel <jhammel@mozilla.com>
parents:
22
diff
changeset
|
113 vars = assemble(AutobotMasterTemplate, AutobotSlaveTemplate) |
145 | 114 vars.append(Variable('debug', 'whether to deploy in debug mode', default=True, cast='eval')) |
22
a7e2f5b2a7e9
stub out a combined template for the master + slave
Jeff Hammel <jhammel@mozilla.com>
parents:
21
diff
changeset
|
115 |
73
d033843da35a
templates work again maybe
Jeff Hammel <jhammel@mozilla.com>
parents:
69
diff
changeset
|
116 def post(self, variables, output): |
d033843da35a
templates work again maybe
Jeff Hammel <jhammel@mozilla.com>
parents:
69
diff
changeset
|
117 AutobotMasterTemplate.create(self, os.path.join(output, 'master'), variables) |
240
6023ae1d13e6
remove trailing whitespace
Jeff Hammel <jhammel@mozilla.com>
parents:
207
diff
changeset
|
118 AutobotSlaveTemplate.create(self, os.path.join(output, 'slave'), variables) |
67
e8dabfd24c42
stub for a template to create new autobot factories; unfinished
Jeff Hammel <jhammel@mozilla.com>
parents:
66
diff
changeset
|
119 |
e8dabfd24c42
stub for a template to create new autobot factories; unfinished
Jeff Hammel <jhammel@mozilla.com>
parents:
66
diff
changeset
|
120 |
e8dabfd24c42
stub for a template to create new autobot factories; unfinished
Jeff Hammel <jhammel@mozilla.com>
parents:
66
diff
changeset
|
121 class ProjectTemplate(MakeItSoTemplate): |
e8dabfd24c42
stub for a template to create new autobot factories; unfinished
Jeff Hammel <jhammel@mozilla.com>
parents:
66
diff
changeset
|
122 """ |
e8dabfd24c42
stub for a template to create new autobot factories; unfinished
Jeff Hammel <jhammel@mozilla.com>
parents:
66
diff
changeset
|
123 template for creating new autobot project stubs for testing |
e8dabfd24c42
stub for a template to create new autobot factories; unfinished
Jeff Hammel <jhammel@mozilla.com>
parents:
66
diff
changeset
|
124 """ |
e8dabfd24c42
stub for a template to create new autobot factories; unfinished
Jeff Hammel <jhammel@mozilla.com>
parents:
66
diff
changeset
|
125 name = 'autobot-project' |
e8dabfd24c42
stub for a template to create new autobot factories; unfinished
Jeff Hammel <jhammel@mozilla.com>
parents:
66
diff
changeset
|
126 templates = [os.path.join('projects', 'project.template')] |
155 | 127 vars = [Variable('description', 'description of the project'), |
67
e8dabfd24c42
stub for a template to create new autobot factories; unfinished
Jeff Hammel <jhammel@mozilla.com>
parents:
66
diff
changeset
|
128 Variable('repo', 'repository location of the project')] |
24 | 129 |
44
481f0bb18787
stub out installing the packages, for hg anyway
Jeff Hammel <jhammel@mozilla.com>
parents:
43
diff
changeset
|
130 # CLI front end class |
20
30ec24255ce9
stub out having a slave template too
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
131 |
41
42ef457708de
stub out adding factories to our specialty CLI class
Jeff Hammel <jhammel@mozilla.com>
parents:
37
diff
changeset
|
132 class AutobotMasterCLI(MakeItSoCLI): |
42ef457708de
stub out adding factories to our specialty CLI class
Jeff Hammel <jhammel@mozilla.com>
parents:
37
diff
changeset
|
133 """ |
42ef457708de
stub out adding factories to our specialty CLI class
Jeff Hammel <jhammel@mozilla.com>
parents:
37
diff
changeset
|
134 command line handler for the master |
42ef457708de
stub out adding factories to our specialty CLI class
Jeff Hammel <jhammel@mozilla.com>
parents:
37
diff
changeset
|
135 """ |
42ef457708de
stub out adding factories to our specialty CLI class
Jeff Hammel <jhammel@mozilla.com>
parents:
37
diff
changeset
|
136 def parser(self): |
42ef457708de
stub out adding factories to our specialty CLI class
Jeff Hammel <jhammel@mozilla.com>
parents:
37
diff
changeset
|
137 parser = MakeItSoCLI.parser(self) |
66
cbcb96142ed6
stubs towards specifying multiple factories
Jeff Hammel <jhammel@mozilla.com>
parents:
62
diff
changeset
|
138 parser.add_option('-f', '--factory', dest='factories', |
cbcb96142ed6
stubs towards specifying multiple factories
Jeff Hammel <jhammel@mozilla.com>
parents:
62
diff
changeset
|
139 default=[], action='append', |
74
d94fbaac7c2c
stub out being able to find scripts cross-platform in a virtualenv
Jeff Hammel <jhammel@mozilla.com>
parents:
73
diff
changeset
|
140 help="factory to use ('--factory -' for all)") |
41
42ef457708de
stub out adding factories to our specialty CLI class
Jeff Hammel <jhammel@mozilla.com>
parents:
37
diff
changeset
|
141 parser.add_option('--list-factories', dest='_list_factories', |
42ef457708de
stub out adding factories to our specialty CLI class
Jeff Hammel <jhammel@mozilla.com>
parents:
37
diff
changeset
|
142 default=False, action='store_true', |
42ef457708de
stub out adding factories to our specialty CLI class
Jeff Hammel <jhammel@mozilla.com>
parents:
37
diff
changeset
|
143 help="list available factories") |
42ef457708de
stub out adding factories to our specialty CLI class
Jeff Hammel <jhammel@mozilla.com>
parents:
37
diff
changeset
|
144 return parser |
42ef457708de
stub out adding factories to our specialty CLI class
Jeff Hammel <jhammel@mozilla.com>
parents:
37
diff
changeset
|
145 |
62
2a5fa6876e48
update template to conform to the new CLI
Jeff Hammel <jhammel@mozilla.com>
parents:
59
diff
changeset
|
146 def parse(self, args=None, parser=None, options=None): |
41
42ef457708de
stub out adding factories to our specialty CLI class
Jeff Hammel <jhammel@mozilla.com>
parents:
37
diff
changeset
|
147 |
240
6023ae1d13e6
remove trailing whitespace
Jeff Hammel <jhammel@mozilla.com>
parents:
207
diff
changeset
|
148 # parse the command line |
41
42ef457708de
stub out adding factories to our specialty CLI class
Jeff Hammel <jhammel@mozilla.com>
parents:
37
diff
changeset
|
149 if not parser or not options or not args: |
42ef457708de
stub out adding factories to our specialty CLI class
Jeff Hammel <jhammel@mozilla.com>
parents:
37
diff
changeset
|
150 parser = self.parser() |
42ef457708de
stub out adding factories to our specialty CLI class
Jeff Hammel <jhammel@mozilla.com>
parents:
37
diff
changeset
|
151 options, args = parser.parse_args() |
42ef457708de
stub out adding factories to our specialty CLI class
Jeff Hammel <jhammel@mozilla.com>
parents:
37
diff
changeset
|
152 |
42ef457708de
stub out adding factories to our specialty CLI class
Jeff Hammel <jhammel@mozilla.com>
parents:
37
diff
changeset
|
153 # list the factories |
42ef457708de
stub out adding factories to our specialty CLI class
Jeff Hammel <jhammel@mozilla.com>
parents:
37
diff
changeset
|
154 if options._list_factories: |
62
2a5fa6876e48
update template to conform to the new CLI
Jeff Hammel <jhammel@mozilla.com>
parents:
59
diff
changeset
|
155 print print_descriptions() |
41
42ef457708de
stub out adding factories to our specialty CLI class
Jeff Hammel <jhammel@mozilla.com>
parents:
37
diff
changeset
|
156 parser.exit() |
42ef457708de
stub out adding factories to our specialty CLI class
Jeff Hammel <jhammel@mozilla.com>
parents:
37
diff
changeset
|
157 |
74
d94fbaac7c2c
stub out being able to find scripts cross-platform in a virtualenv
Jeff Hammel <jhammel@mozilla.com>
parents:
73
diff
changeset
|
158 # check for all factories |
d94fbaac7c2c
stub out being able to find scripts cross-platform in a virtualenv
Jeff Hammel <jhammel@mozilla.com>
parents:
73
diff
changeset
|
159 if options.factories == ['-']: |
d94fbaac7c2c
stub out being able to find scripts cross-platform in a virtualenv
Jeff Hammel <jhammel@mozilla.com>
parents:
73
diff
changeset
|
160 options.factories = factories.keys() |
d94fbaac7c2c
stub out being able to find scripts cross-platform in a virtualenv
Jeff Hammel <jhammel@mozilla.com>
parents:
73
diff
changeset
|
161 |
41
42ef457708de
stub out adding factories to our specialty CLI class
Jeff Hammel <jhammel@mozilla.com>
parents:
37
diff
changeset
|
162 # call the parent |
62
2a5fa6876e48
update template to conform to the new CLI
Jeff Hammel <jhammel@mozilla.com>
parents:
59
diff
changeset
|
163 return MakeItSoCLI.parse(self, args, parser, options) |
41
42ef457708de
stub out adding factories to our specialty CLI class
Jeff Hammel <jhammel@mozilla.com>
parents:
37
diff
changeset
|
164 |
68
fbd4a34d8e42
make project creation template work
Jeff Hammel <jhammel@mozilla.com>
parents:
67
diff
changeset
|
165 |
67
e8dabfd24c42
stub for a template to create new autobot factories; unfinished
Jeff Hammel <jhammel@mozilla.com>
parents:
66
diff
changeset
|
166 class ProjectTemplateCLI(MakeItSoCLI): |
68
fbd4a34d8e42
make project creation template work
Jeff Hammel <jhammel@mozilla.com>
parents:
67
diff
changeset
|
167 """CLI front end for project template""" |
240
6023ae1d13e6
remove trailing whitespace
Jeff Hammel <jhammel@mozilla.com>
parents:
207
diff
changeset
|
168 |
67
e8dabfd24c42
stub for a template to create new autobot factories; unfinished
Jeff Hammel <jhammel@mozilla.com>
parents:
66
diff
changeset
|
169 def __init__(self): |
68
fbd4a34d8e42
make project creation template work
Jeff Hammel <jhammel@mozilla.com>
parents:
67
diff
changeset
|
170 self.usage = '%prog [options] project <output>' |
67
e8dabfd24c42
stub for a template to create new autobot factories; unfinished
Jeff Hammel <jhammel@mozilla.com>
parents:
66
diff
changeset
|
171 MakeItSoCLI.__init__(self, ProjectTemplate) |
240
6023ae1d13e6
remove trailing whitespace
Jeff Hammel <jhammel@mozilla.com>
parents:
207
diff
changeset
|
172 |
67
e8dabfd24c42
stub for a template to create new autobot factories; unfinished
Jeff Hammel <jhammel@mozilla.com>
parents:
66
diff
changeset
|
173 def parse(self, args=None, parser=None, options=None): |
68
fbd4a34d8e42
make project creation template work
Jeff Hammel <jhammel@mozilla.com>
parents:
67
diff
changeset
|
174 |
fbd4a34d8e42
make project creation template work
Jeff Hammel <jhammel@mozilla.com>
parents:
67
diff
changeset
|
175 # parse the arguments |
fbd4a34d8e42
make project creation template work
Jeff Hammel <jhammel@mozilla.com>
parents:
67
diff
changeset
|
176 parser = self.parser() |
fbd4a34d8e42
make project creation template work
Jeff Hammel <jhammel@mozilla.com>
parents:
67
diff
changeset
|
177 options, args = parser.parse_args(args=args) |
fbd4a34d8e42
make project creation template work
Jeff Hammel <jhammel@mozilla.com>
parents:
67
diff
changeset
|
178 |
fbd4a34d8e42
make project creation template work
Jeff Hammel <jhammel@mozilla.com>
parents:
67
diff
changeset
|
179 if not(args): |
fbd4a34d8e42
make project creation template work
Jeff Hammel <jhammel@mozilla.com>
parents:
67
diff
changeset
|
180 parser.print_usage() |
fbd4a34d8e42
make project creation template work
Jeff Hammel <jhammel@mozilla.com>
parents:
67
diff
changeset
|
181 parser.exit() |
fbd4a34d8e42
make project creation template work
Jeff Hammel <jhammel@mozilla.com>
parents:
67
diff
changeset
|
182 |
fbd4a34d8e42
make project creation template work
Jeff Hammel <jhammel@mozilla.com>
parents:
67
diff
changeset
|
183 # deploy to the correct place |
fbd4a34d8e42
make project creation template work
Jeff Hammel <jhammel@mozilla.com>
parents:
67
diff
changeset
|
184 if len(args) not in (1,2): |
fbd4a34d8e42
make project creation template work
Jeff Hammel <jhammel@mozilla.com>
parents:
67
diff
changeset
|
185 parser.error("Please provide a single project") |
fbd4a34d8e42
make project creation template work
Jeff Hammel <jhammel@mozilla.com>
parents:
67
diff
changeset
|
186 project = args[0].lower() |
240
6023ae1d13e6
remove trailing whitespace
Jeff Hammel <jhammel@mozilla.com>
parents:
207
diff
changeset
|
187 |
68
fbd4a34d8e42
make project creation template work
Jeff Hammel <jhammel@mozilla.com>
parents:
67
diff
changeset
|
188 # ensure the argument is a python path |
fbd4a34d8e42
make project creation template work
Jeff Hammel <jhammel@mozilla.com>
parents:
67
diff
changeset
|
189 assert set(project).issubset(string.letters) |
fbd4a34d8e42
make project creation template work
Jeff Hammel <jhammel@mozilla.com>
parents:
67
diff
changeset
|
190 |
fbd4a34d8e42
make project creation template work
Jeff Hammel <jhammel@mozilla.com>
parents:
67
diff
changeset
|
191 # get the variables |
fbd4a34d8e42
make project creation template work
Jeff Hammel <jhammel@mozilla.com>
parents:
67
diff
changeset
|
192 variables = self.get_variables(options) |
fbd4a34d8e42
make project creation template work
Jeff Hammel <jhammel@mozilla.com>
parents:
67
diff
changeset
|
193 variables['project'] = project |
fbd4a34d8e42
make project creation template work
Jeff Hammel <jhammel@mozilla.com>
parents:
67
diff
changeset
|
194 |
fbd4a34d8e42
make project creation template work
Jeff Hammel <jhammel@mozilla.com>
parents:
67
diff
changeset
|
195 # get the output or use the location in the source |
fbd4a34d8e42
make project creation template work
Jeff Hammel <jhammel@mozilla.com>
parents:
67
diff
changeset
|
196 if len(args) == 2: |
fbd4a34d8e42
make project creation template work
Jeff Hammel <jhammel@mozilla.com>
parents:
67
diff
changeset
|
197 output = args[1] |
fbd4a34d8e42
make project creation template work
Jeff Hammel <jhammel@mozilla.com>
parents:
67
diff
changeset
|
198 else: |
67
e8dabfd24c42
stub for a template to create new autobot factories; unfinished
Jeff Hammel <jhammel@mozilla.com>
parents:
66
diff
changeset
|
199 here = os.path.dirname(os.path.abspath(__file__)) |
68
fbd4a34d8e42
make project creation template work
Jeff Hammel <jhammel@mozilla.com>
parents:
67
diff
changeset
|
200 projectdir = os.path.join(here, 'projects', project) |
fbd4a34d8e42
make project creation template work
Jeff Hammel <jhammel@mozilla.com>
parents:
67
diff
changeset
|
201 if os.path.exists(projectdir): |
fbd4a34d8e42
make project creation template work
Jeff Hammel <jhammel@mozilla.com>
parents:
67
diff
changeset
|
202 assert os.path.isdir(projectdir) |
69
849bbc2e5572
first use of project template -> devicemanager
Jeff Hammel <jhammel@mozilla.com>
parents:
68
diff
changeset
|
203 else: |
849bbc2e5572
first use of project template -> devicemanager
Jeff Hammel <jhammel@mozilla.com>
parents:
68
diff
changeset
|
204 os.makedirs(projectdir) |
68
fbd4a34d8e42
make project creation template work
Jeff Hammel <jhammel@mozilla.com>
parents:
67
diff
changeset
|
205 output = os.path.join(projectdir, '__init__.py') |
fbd4a34d8e42
make project creation template work
Jeff Hammel <jhammel@mozilla.com>
parents:
67
diff
changeset
|
206 assert not os.path.exists(output), "Project '%s' already exists" % project |
67
e8dabfd24c42
stub for a template to create new autobot factories; unfinished
Jeff Hammel <jhammel@mozilla.com>
parents:
66
diff
changeset
|
207 |
68
fbd4a34d8e42
make project creation template work
Jeff Hammel <jhammel@mozilla.com>
parents:
67
diff
changeset
|
208 return variables, output |
44
481f0bb18787
stub out installing the packages, for hg anyway
Jeff Hammel <jhammel@mozilla.com>
parents:
43
diff
changeset
|
209 |
481f0bb18787
stub out installing the packages, for hg anyway
Jeff Hammel <jhammel@mozilla.com>
parents:
43
diff
changeset
|
210 ### console_script front-ends |
481f0bb18787
stub out installing the packages, for hg anyway
Jeff Hammel <jhammel@mozilla.com>
parents:
43
diff
changeset
|
211 |
20
30ec24255ce9
stub out having a slave template too
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
212 def create_master(args=sys.argv[1:]): |
41
42ef457708de
stub out adding factories to our specialty CLI class
Jeff Hammel <jhammel@mozilla.com>
parents:
37
diff
changeset
|
213 cli = AutobotMasterCLI(AutobotMasterTemplate) |
62
2a5fa6876e48
update template to conform to the new CLI
Jeff Hammel <jhammel@mozilla.com>
parents:
59
diff
changeset
|
214 cli(*args) |
1 | 215 |
20
30ec24255ce9
stub out having a slave template too
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
216 def create_slave(args=sys.argv[1:]): |
30ec24255ce9
stub out having a slave template too
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
217 cli = MakeItSoCLI(AutobotSlaveTemplate) |
62
2a5fa6876e48
update template to conform to the new CLI
Jeff Hammel <jhammel@mozilla.com>
parents:
59
diff
changeset
|
218 cli(*args) |
20
30ec24255ce9
stub out having a slave template too
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
219 |
30ec24255ce9
stub out having a slave template too
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
220 def create_autobot(args=sys.argv[1:]): |
43
19d555001292
use our CLI class for the create-autobot too
Jeff Hammel <jhammel@mozilla.com>
parents:
42
diff
changeset
|
221 cli = AutobotMasterCLI(AutobotTemplate) |
62
2a5fa6876e48
update template to conform to the new CLI
Jeff Hammel <jhammel@mozilla.com>
parents:
59
diff
changeset
|
222 cli(*args) |
20
30ec24255ce9
stub out having a slave template too
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
223 |
67
e8dabfd24c42
stub for a template to create new autobot factories; unfinished
Jeff Hammel <jhammel@mozilla.com>
parents:
66
diff
changeset
|
224 def create_project(args=sys.argv[1:]): |
e8dabfd24c42
stub for a template to create new autobot factories; unfinished
Jeff Hammel <jhammel@mozilla.com>
parents:
66
diff
changeset
|
225 cli = ProjectTemplateCLI() |
68
fbd4a34d8e42
make project creation template work
Jeff Hammel <jhammel@mozilla.com>
parents:
67
diff
changeset
|
226 cli(*args) |
67
e8dabfd24c42
stub for a template to create new autobot factories; unfinished
Jeff Hammel <jhammel@mozilla.com>
parents:
66
diff
changeset
|
227 |
1 | 228 if __name__ == '__main__': |
20
30ec24255ce9
stub out having a slave template too
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
229 create_master() |