| #!/usr/bin/env python |
| # |
| # Copyright 2015 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import optparse |
| import os |
| import sys |
| import tempfile |
| |
| REPOSITORY_ROOT = os.path.abspath(os.path.join( |
| os.path.dirname(__file__), '..', '..', '..')) |
| |
| sys.path.append(os.path.join(REPOSITORY_ROOT, 'build/android/gyp/util')) |
| sys.path.append(os.path.join(REPOSITORY_ROOT, 'net/tools/net_docs')) |
| import build_utils |
| import net_docs |
| from markdown.postprocessors import Postprocessor |
| from markdown.extensions import Extension |
| |
| |
| class CronetPostprocessor(Postprocessor): |
| def run(self, text): |
| return text.replace('@Override', '@Override') |
| |
| |
| class CronetExtension(Extension): |
| def extendMarkdown(self, md, md_globals): |
| md.postprocessors.add('CronetPostprocessor', |
| CronetPostprocessor(md), '_end') |
| |
| |
| def GenerateJavadoc(options, src_dir): |
| output_dir = os.path.abspath(os.path.join(options.output_dir, 'javadoc')) |
| working_dir = os.path.join(options.input_dir, 'android/api') |
| overview_file = os.path.abspath(options.overview_file) |
| lib_java_dir = os.path.abspath(options.lib_java_dir) |
| |
| build_utils.DeleteDirectory(output_dir) |
| build_utils.MakeDirectory(output_dir) |
| javadoc_cmd = ['ant', '-Dsource.dir=' + src_dir , '-Ddoc.dir=' + output_dir, |
| '-Dlib.java.dir=' + lib_java_dir, '-Doverview=' + overview_file, |
| 'doc'] |
| stdout = build_utils.CheckOutput(javadoc_cmd, cwd=working_dir) |
| for line in stdout.splitlines(): |
| if " error: " in line or "javadoc: error " in line: |
| build_utils.DeleteDirectory(output_dir) |
| raise build_utils.CalledProcessError(working_dir, javadoc_cmd, stdout) |
| # TODO(crbug.com/655666): remove compiler suppression warning once fixed. |
| if ("warning" in line and not line.endswith('warnings') and |
| not "the highest major version" in line): |
| build_utils.DeleteDirectory(output_dir) |
| raise build_utils.CalledProcessError(working_dir, javadoc_cmd, stdout) |
| |
| |
| def main(): |
| parser = optparse.OptionParser() |
| build_utils.AddDepfileOption(parser) |
| parser.add_option('--output-dir', help='Directory to put javadoc') |
| parser.add_option('--input-dir', help='Root of cronet source') |
| parser.add_option('--input-src-jar', help='Cronet api source jar') |
| parser.add_option('--overview-file', help='Path of the overview page') |
| parser.add_option('--readme-file', help='Path of the README.md') |
| parser.add_option('--lib-java-dir', help='Directory containing java libs') |
| parser.add_option('--stamp', help='Path to touch on success.') |
| |
| options, _ = parser.parse_args() |
| # A temporary directory to put the output of cronet api source jar files. |
| unzipped_jar_path = tempfile.mkdtemp(dir=options.output_dir) |
| if os.path.exists(options.input_src_jar): |
| jar_cmd = ['jar', 'xf', os.path.abspath(options.input_src_jar)] |
| build_utils.CheckOutput(jar_cmd, cwd=unzipped_jar_path) |
| else: |
| raise Exception('Jar file does not exist: %s' % options.input_src_jar) |
| |
| net_docs.ProcessDocs([options.readme_file], options.input_dir, |
| options.output_dir, extensions=[CronetExtension()]) |
| |
| GenerateJavadoc(options, os.path.abspath(unzipped_jar_path)) |
| |
| if options.stamp: |
| build_utils.Touch(options.stamp) |
| if options.depfile: |
| assert options.stamp |
| deps = [] |
| for root, _, filenames in os.walk(options.input_dir): |
| deps.extend(os.path.join(root, f) for f in filenames) |
| build_utils.WriteDepfile(options.depfile, options.stamp, deps) |
| # Clean up temporary output directory. |
| build_utils.DeleteDirectory(unzipped_jar_path) |
| |
| if __name__ == '__main__': |
| sys.exit(main()) |