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