1#!/usr/bin/env python 2# Copyright (c) 2012 The Chromium Authors. All rights reserved. 3# Use of this source code is governed by a BSD-style license that can be 4# found in the LICENSE file. 5 6"""Embeds standalone JavaScript snippets in C++ code. 7 8Each argument to the script must be a file containing an associated JavaScript 9function (e.g., evaluate_script.js should contain an evaluateScript function). 10This is called the exported function of the script. The entire script will be 11put into a C-style string in the form of an anonymous function which invokes 12the exported function when called. 13""" 14 15import optparse 16import os 17import sys 18 19import cpp_source 20 21 22def main(): 23 parser = optparse.OptionParser() 24 parser.add_option( 25 '', '--directory', type='string', default='.', 26 help='Path to directory where the cc/h js file should be created') 27 options, args = parser.parse_args() 28 29 global_string_map = {} 30 for js_file in args: 31 base_name = os.path.basename(js_file)[:-3].title().replace('_', '') 32 func_name = base_name[0].lower() + base_name[1:] 33 script_name = 'k%sScript' % base_name 34 with open(js_file, 'r') as f: 35 contents = f.read() 36 script = 'function() { %s; return %s.apply(null, arguments) }' % ( 37 contents, func_name) 38 global_string_map[script_name] = script 39 40 cpp_source.WriteSource('js', 'chrome/test/chromedriver/chrome', 41 options.directory, global_string_map) 42 43 44if __name__ == '__main__': 45 sys.exit(main()) 46