16d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)#!/usr/bin/env python 26d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 36d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)# Copyright 2014 The Chromium Authors. All rights reserved. 46d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be 56d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)# found in the LICENSE file. 66d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 76d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)'''Generates test_messages.js from an extension message json file.''' 86d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 96d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)import optparse 106d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)import sys 116d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 126d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)def Die(message): 136d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) '''Prints an error message and exit the program.''' 146d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) print >>sys.stderr, message 156d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) sys.exit(1) 166d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 176d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 186d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)# Tempalte for the test_messages.js. 196d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)_JS_TEMPLATE = '''// GENERATED FROM %(in_file)s 206d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 216d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)goog.provide('cvox.TestMessages'); 226d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 236d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)cvox.TestMessages = %(json)s; 246d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)''' 256d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 266d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 276d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)def main(): 286d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) parser = optparse.OptionParser(description=__doc__) 296d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) parser.add_option('-o', '--output_file', action='store', 306d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) metavar='SPEC', 316d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) help=('Where to output the generated deps file.')) 326d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) options, args = parser.parse_args() 336d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) if options.output_file is None: 346d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) Die('Output file not specified') 356d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) if len(args) != 1: 366d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) Die('Exactly one input file must be specified') 376d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) in_file_name = args[0]; 386d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) with open(in_file_name) as in_file: 396d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) json = in_file.read().strip() 406d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) with open(options.output_file, 'w') as out_file: 416d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) out_file.write(_JS_TEMPLATE % {'in_file': in_file_name, 'json': json}) 426d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 436d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 446d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)if __name__ == '__main__': 456d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) main() 46