| OLD | NEW |
| 1 #!/usr/bin/python | 1 #!/usr/bin/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 """Docbuilder for extension docs.""" | 6 """Docbuilder for extension docs.""" |
| 7 | 7 |
| 8 import glob | 8 import glob |
| 9 import os | 9 import os |
| 10 import os.path | 10 import os.path |
| 11 import shutil | 11 import shutil |
| 12 import sys | 12 import sys |
| 13 import time | 13 import time |
| 14 import urllib | 14 import urllib |
| 15 | 15 |
| 16 from subprocess import Popen, PIPE | 16 from subprocess import Popen, PIPE |
| 17 from optparse import OptionParser | 17 from optparse import OptionParser |
| 18 | 18 |
| 19 _script_path = os.path.realpath(__file__) | 19 _script_path = os.path.realpath(__file__) |
| 20 _build_dir = os.path.dirname(_script_path) | 20 _build_dir = os.path.dirname(_script_path) |
| 21 _base_dir = os.path.normpath(_build_dir + "/..") | 21 _base_dir = os.path.normpath(_build_dir + "/..") |
| 22 _static_dir = _base_dir + "/static" | 22 _static_dir = _base_dir + "/static" |
| 23 _js_dir = _base_dir + "/js" | 23 _js_dir = _base_dir + "/js" |
| 24 _template_dir = _base_dir + "/template" | 24 _template_dir = _base_dir + "/template" |
| 25 _samples_dir = _base_dir + "/examples" | 25 _samples_dir = _base_dir + "/examples" |
| 26 _extension_api_dir = os.path.normpath(_base_dir + "/../api") | 26 _extension_api_dir = os.path.normpath(_base_dir + "/../api") |
| 27 | 27 |
| 28 _extension_api_json_schemas = glob.glob(_extension_api_dir + | 28 _extension_api_json_schemas = glob.glob(_extension_api_dir + |
| 29 '/[a-zA-Z0-9]*.json') | 29 '/[a-zA-Z0-9]*.json') |
| 30 _extension_api_idl_schemas = glob.glob(_extension_api_dir + |
| 31 '/[a-zA-Z0-9]*.idl') |
| 30 _api_template_html = _template_dir + "/api_template.html" | 32 _api_template_html = _template_dir + "/api_template.html" |
| 31 _page_shell_html = _template_dir + "/page_shell.html" | 33 _page_shell_html = _template_dir + "/page_shell.html" |
| 32 _generator_html = _build_dir + "/generator.html" | 34 _generator_html = _build_dir + "/generator.html" |
| 33 _samples_json = _base_dir + "/samples.json" | 35 _samples_json = _base_dir + "/samples.json" |
| 34 | 36 |
| 35 _expected_output_preamble = "#BEGIN" | 37 _expected_output_preamble = "#BEGIN" |
| 36 _expected_output_postamble = "#END" | 38 _expected_output_postamble = "#END" |
| 37 | 39 |
| 38 # HACK! This is required because we can only depend on python 2.4 and | 40 # HACK! This is required because we can only depend on python 2.4 and |
| 39 # the calling environment may not be setup to set the PYTHONPATH | 41 # the calling environment may not be setup to set the PYTHONPATH |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 186 default=True) | 188 default=True) |
| 187 options, args = parser.parse_args() | 189 options, args = parser.parse_args() |
| 188 | 190 |
| 189 if (options.dump_render_tree_path and | 191 if (options.dump_render_tree_path and |
| 190 os.path.isfile(options.dump_render_tree_path)): | 192 os.path.isfile(options.dump_render_tree_path)): |
| 191 dump_render_tree = options.dump_render_tree_path | 193 dump_render_tree = options.dump_render_tree_path |
| 192 else: | 194 else: |
| 193 dump_render_tree = FindDumpRenderTree() | 195 dump_render_tree = FindDumpRenderTree() |
| 194 | 196 |
| 195 # Load the manifest of existing API Methods | 197 # Load the manifest of existing API Methods |
| 196 api_manifest = ApiManifest(_extension_api_json_schemas) | 198 api_manifest = ApiManifest(_extension_api_json_schemas, |
| 199 _extension_api_idl_schemas) |
| 197 | 200 |
| 198 # Read static file names | 201 # Read static file names |
| 199 static_names = GetStaticFileNames() | 202 static_names = GetStaticFileNames() |
| 200 | 203 |
| 201 # Read module names | 204 # Read module names |
| 202 module_names = api_manifest.getModuleNames() | 205 module_names = api_manifest.getModuleNames() |
| 203 | 206 |
| 204 # All pages to generate | 207 # All pages to generate |
| 205 page_names = static_names | module_names | 208 page_names = static_names | module_names |
| 206 | 209 |
| 207 # Allow the user to render a single page if they want | 210 # Allow the user to render a single page if they want |
| 208 if options.page_name: | 211 if options.page_name: |
| 209 if options.page_name in page_names: | 212 if options.page_name in page_names: |
| 210 page_names = [options.page_name] | 213 page_names = [options.page_name] |
| 211 else: | 214 else: |
| 212 raise Exception("--page-name argument must be one of %s." % | 215 raise Exception("--page-name argument must be one of %s." % |
| 213 ', '.join(sorted(page_names))) | 216 ', '.join(sorted(page_names))) |
| 214 | 217 |
| 218 # Write temporary JSON files based on the IDL inputs |
| 219 api_manifest.generateJSONFromIDL() |
| 220 |
| 215 # Render a manifest file containing metadata about all the extension samples | 221 # Render a manifest file containing metadata about all the extension samples |
| 216 samples_manifest = SamplesManifest(_samples_dir, _base_dir, api_manifest) | 222 samples_manifest = SamplesManifest(_samples_dir, _base_dir, api_manifest) |
| 217 samples_manifest.writeToFile(_samples_json) | 223 samples_manifest.writeToFile(_samples_json) |
| 218 | 224 |
| 219 # Write zipped versions of the samples listed in the manifest to the | 225 # Write zipped versions of the samples listed in the manifest to the |
| 220 # filesystem, unless the user has disabled it | 226 # filesystem, unless the user has disabled it |
| 221 if options.zips: | 227 if options.zips: |
| 222 modified_zips = samples_manifest.writeZippedSamples() | 228 modified_zips = samples_manifest.writeZippedSamples() |
| 223 else: | 229 else: |
| 224 modified_zips = [] | 230 modified_zips = [] |
| (...skipping 11 matching lines...) Expand all Loading... |
| 236 for f in modified_files: | 242 for f in modified_files: |
| 237 print " * %s" % f | 243 print " * %s" % f |
| 238 | 244 |
| 239 # Hack. Sleep here, otherwise windows doesn't properly close the debug.log | 245 # Hack. Sleep here, otherwise windows doesn't properly close the debug.log |
| 240 # and the os.remove will fail with a "Permission denied". | 246 # and the os.remove will fail with a "Permission denied". |
| 241 time.sleep(1) | 247 time.sleep(1) |
| 242 debug_log = os.path.normpath(_build_dir + "/" + "debug.log") | 248 debug_log = os.path.normpath(_build_dir + "/" + "debug.log") |
| 243 if (os.path.isfile(debug_log)): | 249 if (os.path.isfile(debug_log)): |
| 244 os.remove(debug_log) | 250 os.remove(debug_log) |
| 245 | 251 |
| 252 # Cleanup our temporary IDL->JSON files |
| 253 api_manifest.cleanupGeneratedFiles() |
| 254 |
| 246 if 'EX_OK' in dir(os): | 255 if 'EX_OK' in dir(os): |
| 247 return os.EX_OK | 256 return os.EX_OK |
| 248 else: | 257 else: |
| 249 return 0 | 258 return 0 |
| 250 | 259 |
| 251 if __name__ == '__main__': | 260 if __name__ == '__main__': |
| 252 sys.exit(main()) | 261 sys.exit(main()) |
| OLD | NEW |