OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # | 2 # |
3 # Copyright (c) 2013 The Chromium Authors. All rights reserved. | 3 # Copyright (c) 2013 The Chromium Authors. All rights reserved. |
4 # Use of this source code is governed by a BSD-style license that can be | 4 # Use of this source code is governed by a BSD-style license that can be |
5 # found in the LICENSE file. | 5 # found in the LICENSE file. |
6 | 6 |
7 import collections | 7 import collections |
8 import copy | 8 import copy |
9 import json | 9 import json |
10 import os | 10 import os |
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
202 | 202 |
203 def GetRunBotOptParser(): | 203 def GetRunBotOptParser(): |
204 parser = bb_utils.GetParser() | 204 parser = bb_utils.GetParser() |
205 parser.add_option('--bot-id', help='Specify bot id directly.') | 205 parser.add_option('--bot-id', help='Specify bot id directly.') |
206 parser.add_option('--testing', action='store_true', | 206 parser.add_option('--testing', action='store_true', |
207 help='For testing: print, but do not run commands') | 207 help='For testing: print, but do not run commands') |
208 | 208 |
209 return parser | 209 return parser |
210 | 210 |
211 | 211 |
212 def main(argv): | 212 def GetBotConfig(options, bot_step_map): |
213 parser = GetRunBotOptParser() | |
214 options, args = parser.parse_args(argv[1:]) | |
215 if args: | |
216 parser.error('Unused args: %s' % args) | |
217 | |
218 bot_id = options.bot_id or options.factory_properties.get('android_bot_id') | 213 bot_id = options.bot_id or options.factory_properties.get('android_bot_id') |
219 if not bot_id: | 214 if not bot_id: |
220 parser.error('A bot id must be specified through option or factory_props.') | 215 print (sys.stderr, |
| 216 'A bot id must be specified through option or factory_props.') |
| 217 return |
221 | 218 |
222 bot_config = GetBestMatch(GetBotStepMap(), bot_id) | 219 bot_config = GetBestMatch(bot_step_map, bot_id) |
223 if not bot_config: | 220 if not bot_config: |
224 print 'Error: config for id="%s" cannot be inferred.' % bot_id | 221 print 'Error: config for id="%s" cannot be inferred.' % bot_id |
225 return 1 | 222 return bot_config |
226 | 223 |
227 print 'Using config:', bot_config | |
228 | 224 |
229 commands = GetCommands(options, bot_config) | 225 def RunBotCommands(options, commands, env): |
230 for command in commands: | |
231 print 'Will run: ', bb_utils.CommandToString(command) | |
232 print | |
233 | |
234 env = GetEnvironment(bot_config.host_obj, options.testing) | |
235 print 'Environment changes:' | 226 print 'Environment changes:' |
236 print DictDiff(dict(os.environ), env) | 227 print DictDiff(dict(os.environ), env) |
237 | 228 |
238 for command in commands: | 229 for command in commands: |
239 print bb_utils.CommandToString(command) | 230 print bb_utils.CommandToString(command) |
240 sys.stdout.flush() | 231 sys.stdout.flush() |
241 if options.testing: | 232 if options.testing: |
242 env['BUILDBOT_TESTING'] = '1' | 233 env['BUILDBOT_TESTING'] = '1' |
243 return_code = subprocess.call(command, cwd=bb_utils.CHROME_SRC, env=env) | 234 return_code = subprocess.call(command, cwd=bb_utils.CHROME_SRC, env=env) |
244 if return_code != 0: | 235 if return_code != 0: |
245 return return_code | 236 return return_code |
246 | 237 |
247 | 238 |
| 239 def main(argv): |
| 240 parser = GetRunBotOptParser() |
| 241 options, args = parser.parse_args(argv[1:]) |
| 242 if args: |
| 243 parser.error('Unused args: %s' % args) |
| 244 |
| 245 bot_config = GetBotConfig(options, GetBotStepMap()) |
| 246 if not bot_config: |
| 247 sys.exit(1) |
| 248 |
| 249 print 'Using config:', bot_config |
| 250 |
| 251 commands = GetCommands(options, bot_config) |
| 252 for command in commands: |
| 253 print 'Will run: ', bb_utils.CommandToString(command) |
| 254 print |
| 255 |
| 256 env = GetEnvironment(bot_config.host_obj, options.testing) |
| 257 return RunBotCommands(options, commands, env) |
| 258 |
| 259 |
248 if __name__ == '__main__': | 260 if __name__ == '__main__': |
249 sys.exit(main(sys.argv)) | 261 sys.exit(main(sys.argv)) |
OLD | NEW |