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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
3bd7f767d74a more stubbing of template
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
1 #!/usr/bin/env python
3bd7f767d74a more stubbing of template
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
2
3bd7f767d74a more stubbing of template
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
3 """
3
1d615610e442 add a docstring
Jeff Hammel <jhammel@mozilla.com>
parents: 1
diff changeset
4 templates for the A*Team's buildbot
1
3bd7f767d74a more stubbing of template
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
5 """
3bd7f767d74a more stubbing of template
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
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
3bd7f767d74a more stubbing of template
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
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
3bd7f767d74a more stubbing of template
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
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
3bd7f767d74a more stubbing of template
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
45 class AutobotMasterTemplate(MakeItSoTemplate):
3bd7f767d74a more stubbing of template
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
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
48bc52d51252 make irc configurable
Jeff Hammel <jhammel@mozilla.com>
parents: 249
diff changeset
54 Variable('publichtmlport', 'port for public waterfall display', default=8011, cast=int),
48bc52d51252 make irc configurable
Jeff Hammel <jhammel@mozilla.com>
parents: 249
diff changeset
55 Variable('botname', 'name of IRC bot', default='autobot'),
251
911af6a47544 forgot a comma
Jeff Hammel <jhammel@mozilla.com>
parents: 250
diff changeset
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
1a4cb5ae38e2 forgot a ]
Jeff Hammel <jhammel@mozilla.com>
parents: 251
diff changeset
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
59cc21718ced select factory
Jeff Hammel <jhammel@mozilla.com>
parents: 12
diff changeset
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
59cc21718ced select factory
Jeff Hammel <jhammel@mozilla.com>
parents: 12
diff changeset
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
59cc21718ced select factory
Jeff Hammel <jhammel@mozilla.com>
parents: 12
diff changeset
67 factory = raw_input()
59cc21718ced select factory
Jeff Hammel <jhammel@mozilla.com>
parents: 12
diff changeset
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
59cc21718ced select factory
Jeff Hammel <jhammel@mozilla.com>
parents: 12
diff changeset
70 else:
59cc21718ced select factory
Jeff Hammel <jhammel@mozilla.com>
parents: 12
diff changeset
71 raise AssertionError("No factory provided")
1
3bd7f767d74a more stubbing of template
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
72
87
d4452281f42a fix missing ]
Jeff Hammel <jhammel@mozilla.com>
parents: 86
diff changeset
73 # stringify for .ini file
d4452281f42a fix missing ]
Jeff Hammel <jhammel@mozilla.com>
parents: 86
diff changeset
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
3bd7f767d74a more stubbing of template
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
88 class AutobotSlaveTemplate(MakeItSoTemplate):
3bd7f767d74a more stubbing of template
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
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
3bd7f767d74a more stubbing of template
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
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
6c3c6488e4a9 can has a slave now
Jeff Hammel <jhammel@mozilla.com>
parents: 20
diff changeset
102 print ' '.join(command)
6c3c6488e4a9 can has a slave now
Jeff Hammel <jhammel@mozilla.com>
parents: 20
diff changeset
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
b10d16cdc22b stub out change filters
Jeff Hammel <jhammel@mozilla.com>
parents: 132
diff changeset
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
5e1b450341a2 stub adding talos test
Jeff Hammel <jhammel@mozilla.com>
parents: 145
diff changeset
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
fe1bb4c667bc stub post method
Jeff Hammel <jhammel@mozilla.com>
parents: 23
diff changeset
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
3bd7f767d74a more stubbing of template
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
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
3bd7f767d74a more stubbing of template
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
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()