OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 """Creates a directory with with the unpacked contents of the remoting webapp. | 6 """Creates a directory with with the unpacked contents of the remoting webapp. |
7 | 7 |
8 The directory will contain a copy-of or a link-to to all remoting webapp | 8 The directory will contain a copy-of or a link-to to all remoting webapp |
9 resources. This includes HTML/JS and any plugin binaries. The script also | 9 resources. This includes HTML/JS and any plugin binaries. The script also |
10 massages resulting files appropriately with host plugin data. Finally, | 10 massages resulting files appropriately with host plugin data. Finally, |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
100 sys.path.append(os.path.split(jinja2_path)[0]) | 100 sys.path.append(os.path.split(jinja2_path)[0]) |
101 import jinja2 | 101 import jinja2 |
102 (template_path, template_name) = os.path.split(input_file) | 102 (template_path, template_name) = os.path.split(input_file) |
103 include_paths = [template_path] + include_paths | 103 include_paths = [template_path] + include_paths |
104 env = jinja2.Environment(loader=jinja2.FileSystemLoader(include_paths)) | 104 env = jinja2.Environment(loader=jinja2.FileSystemLoader(include_paths)) |
105 template = env.get_template(template_name) | 105 template = env.get_template(template_name) |
106 rendered = template.render(context) | 106 rendered = template.render(context) |
107 io.open(output_file, 'w', encoding='utf-8').write(rendered) | 107 io.open(output_file, 'w', encoding='utf-8').write(rendered) |
108 | 108 |
109 | 109 |
110 def getClientPluginType(webapp_type): | |
111 if webapp_type in ['v1', 'v2']: | |
112 return 'native' | |
113 elif webapp_type in ['v2_pnacl', 'shared_module']: | |
114 return 'pnacl' | |
115 elif webapp_type is 'app_remoting': | |
116 return '' | |
117 | |
118 | |
119 def buildWebApp(buildtype, version, destination, zip_path, | 110 def buildWebApp(buildtype, version, destination, zip_path, |
120 manifest_template, webapp_type, appid, app_client_id, app_name, | 111 manifest_template, webapp_type, appid, app_client_id, app_name, |
121 app_description, app_capabilities, manifest_key, files, | 112 app_description, app_capabilities, manifest_key, files, |
122 files_listfile, locales_listfile, jinja_paths, | 113 files_listfile, locales_listfile, jinja_paths, |
123 service_environment, use_gcd): | 114 service_environment, use_gcd): |
124 """Does the main work of building the webapp directory and zipfile. | 115 """Does the main work of building the webapp directory and zipfile. |
125 | 116 |
126 Args: | 117 Args: |
127 buildtype: the type of build ("Official", "Release" or "Dev"). | 118 buildtype: the type of build ("Official", "Release" or "Dev"). |
128 destination: A string with path to directory where the webapp will be | 119 destination: A string with path to directory where the webapp will be |
129 written. | 120 written. |
130 zipfile: A string with path to the zipfile to create containing the | 121 zipfile: A string with path to the zipfile to create containing the |
131 contents of |destination|. | 122 contents of |destination|. |
132 manifest_template: jinja2 template file for manifest. | 123 manifest_template: jinja2 template file for manifest. |
133 webapp_type: webapp type: | 124 webapp_type: webapp type: |
134 For DesktopRemoting: "v1", "v2" or "v2_pnacl" | 125 For DesktopRemoting: "desktop" |
135 For AppRemoting: "app_remoting" or "shared_module" | 126 For AppRemoting: "app_remoting" or "shared_module" |
136 appid: A string with the Remoting Application Id (only used for app | 127 appid: A string with the Remoting Application Id (only used for app |
137 remoting webapps). If supplied, it defaults to using the | 128 remoting webapps). If supplied, it defaults to using the |
138 test API server. | 129 test API server. |
139 app_client_id: The OAuth2 client ID for the webapp. | 130 app_client_id: The OAuth2 client ID for the webapp. |
140 app_name: A string with the name of the application. | 131 app_name: A string with the name of the application. |
141 app_description: A string with the description of the application. | 132 app_description: A string with the description of the application. |
142 app_capabilities: A set of strings naming the capabilities that should be | 133 app_capabilities: A set of strings naming the capabilities that should be |
143 enabled for this application. | 134 enabled for this application. |
144 manifest_key: The manifest key for the webapp. | 135 manifest_key: The manifest key for the webapp. |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
225 raise Exception('Unknown extension: ' + current_locale) | 216 raise Exception('Unknown extension: ' + current_locale) |
226 | 217 |
227 is_app_remoting_webapp = webapp_type == 'app_remoting' | 218 is_app_remoting_webapp = webapp_type == 'app_remoting' |
228 is_app_remoting_shared_module = webapp_type == 'shared_module' | 219 is_app_remoting_shared_module = webapp_type == 'shared_module' |
229 is_app_remoting = is_app_remoting_webapp or is_app_remoting_shared_module | 220 is_app_remoting = is_app_remoting_webapp or is_app_remoting_shared_module |
230 is_prod_service_environment = service_environment == 'vendor' or \ | 221 is_prod_service_environment = service_environment == 'vendor' or \ |
231 service_environment == 'prod' or \ | 222 service_environment == 'prod' or \ |
232 service_environment == 'prod-testing' | 223 service_environment == 'prod-testing' |
233 is_desktop_remoting = not is_app_remoting | 224 is_desktop_remoting = not is_app_remoting |
234 | 225 |
235 # Set client plugin type. | |
236 if not is_app_remoting_webapp: | |
237 client_plugin = getClientPluginType(webapp_type) | |
238 findAndReplace(os.path.join(destination, 'plugin_settings.js'), | |
239 "'CLIENT_PLUGIN_TYPE'", "'" + client_plugin + "'") | |
240 | |
241 # Allow host names for google services/apis to be overriden via env vars. | 226 # Allow host names for google services/apis to be overriden via env vars. |
242 oauth2AccountsHost = os.environ.get( | 227 oauth2AccountsHost = os.environ.get( |
243 'OAUTH2_ACCOUNTS_HOST', 'https://accounts.google.com') | 228 'OAUTH2_ACCOUNTS_HOST', 'https://accounts.google.com') |
244 oauth2ApiHost = os.environ.get( | 229 oauth2ApiHost = os.environ.get( |
245 'OAUTH2_API_HOST', 'https://www.googleapis.com') | 230 'OAUTH2_API_HOST', 'https://www.googleapis.com') |
246 directoryApiHost = os.environ.get( | 231 directoryApiHost = os.environ.get( |
247 'DIRECTORY_API_HOST', 'https://www.googleapis.com') | 232 'DIRECTORY_API_HOST', 'https://www.googleapis.com') |
248 remotingApiHost = os.environ.get( | 233 remotingApiHost = os.environ.get( |
249 'REMOTING_API_HOST', 'https://remoting-pa.googleapis.com') | 234 'REMOTING_API_HOST', 'https://remoting-pa.googleapis.com') |
250 | 235 |
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
499 parser.add_argument('--use_gcd', choices=['0', '1'], default='0') | 484 parser.add_argument('--use_gcd', choices=['0', '1'], default='0') |
500 | 485 |
501 args = parser.parse_args() | 486 args = parser.parse_args() |
502 args.use_gcd = (args.use_gcd != '0') | 487 args.use_gcd = (args.use_gcd != '0') |
503 args.app_capabilities = set(args.app_capabilities) | 488 args.app_capabilities = set(args.app_capabilities) |
504 return buildWebApp(**vars(args)) | 489 return buildWebApp(**vars(args)) |
505 | 490 |
506 | 491 |
507 if __name__ == '__main__': | 492 if __name__ == '__main__': |
508 sys.exit(main()) | 493 sys.exit(main()) |
OLD | NEW |