diff --git a/tools/skyanalyzer b/tools/skyanalyzer index f2fb6dd8b26..715d19e41f2 100755 --- a/tools/skyanalyzer +++ b/tools/skyanalyzer @@ -9,6 +9,8 @@ import re import subprocess import sys +from skypy.url_mappings import URLMappings + SKY_TOOLS_DIR = os.path.dirname(os.path.abspath(__file__)) SKY_ROOT = os.path.dirname(SKY_TOOLS_DIR) SRC_ROOT = os.path.dirname(SKY_ROOT) @@ -46,23 +48,20 @@ def main(): parser.add_argument('--congratulate', action="store_true") parser.add_argument('build_dir', type=str) parser.add_argument('app_path', type=str) + args = parser.parse_args() build_dir = os.path.abspath(args.build_dir) + + url_mappings = URLMappings(SRC_ROOT, build_dir) analyzer_path = os.path.join(SRC_ROOT, 'third_party/dart-sdk/dart-sdk/bin/dartanalyzer') - dart_builtin_natives_path = os.path.join(SRC_ROOT, 'sky/engine/bindings/builtin_natives.dart') - dart_mojo_internal_path = os.path.join(SRC_ROOT, 'mojo/public/dart/sdk_ext/internal.dart') - dart_sky_internals_path = os.path.join(SRC_ROOT, 'sky/engine/bindings/sky_internals.dart') - dart_sky_path = os.path.join(build_dir, 'gen/sky/bindings/dart_sky.dart') packages_root = os.path.join(build_dir, 'gen/dart-pkg/packages') - analyzer_args = [analyzer_path, - "--url-mapping=dart:mojo.internal,%s" % dart_mojo_internal_path, - "--url-mapping=dart:sky,%s" % dart_sky_path, - "--url-mapping=dart:sky.internals,%s" % dart_sky_internals_path, - "--url-mapping=dart:sky_builtin_natives,%s" % dart_builtin_natives_path, + + analyzer_args = [ + analyzer_path, "--package-root", packages_root, - "--package-warnings", - args.app_path - ] + "--package-warnings", args.app_path + ] + url_mappings.as_args + try: subprocess.check_output(analyzer_args, stderr=subprocess.STDOUT) except subprocess.CalledProcessError as e: diff --git a/tools/skydoc.py b/tools/skydoc.py new file mode 100755 index 00000000000..3ab9e55023a --- /dev/null +++ b/tools/skydoc.py @@ -0,0 +1,51 @@ +#!/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 argparse +import os +import subprocess +import sys + +from skypy.url_mappings import URLMappings + +SKY_TOOLS_DIR = os.path.dirname(os.path.abspath(__file__)) +SKY_ROOT = os.path.dirname(SKY_TOOLS_DIR) +SRC_ROOT = os.path.dirname(SKY_ROOT) + +DARTDOC = 'dartdoc' + +def main(): + try: + subprocess.check_output([DARTDOC, '--version']) + except: + print 'Cannot find "dartdoc". Did you run `pub global activate dartdoc` ?' + return 1 + + parser = argparse.ArgumentParser(description='Sky Documentation Generator') + parser.add_argument('build_dir', type=str, help='Path to build output') + args = parser.parse_args() + + build_dir = os.path.abspath(args.build_dir) + url_mappings = URLMappings(SRC_ROOT, build_dir) + + packages_root = os.path.join(build_dir, 'gen/dart-pkg/packages') + sky_package = os.path.join(build_dir, 'gen/dart-pkg/sky') + doc_dir = os.path.join(build_dir, 'gen/dart-pkg/sky/doc') + + if not os.path.exists(packages_root): + print 'Cannot find Dart pacakges at "%s".' % packages_root + print 'Did you run `ninja -C %s sky` ?' % os.path.relpath(build_dir, os.getcwd()) + return 1 + + analyzer_args = [ + DARTDOC, + '--package-root', packages_root, + '--input', sky_package, + '--output', doc_dir, + ] + url_mappings.as_args + subprocess.check_call(analyzer_args) + +if __name__ == '__main__': + sys.exit(main()) diff --git a/tools/skypy/url_mappings.py b/tools/skypy/url_mappings.py new file mode 100644 index 00000000000..47c48bac86a --- /dev/null +++ b/tools/skypy/url_mappings.py @@ -0,0 +1,20 @@ +# Copyright 2014 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 os + +class URLMappings(object): + def __init__(self, src_root, build_dir): + self.mappings = { + 'dart:mojo.internal': os.path.join(src_root, 'mojo/public/dart/sdk_ext/internal.dart'), + 'dart:sky': os.path.join(build_dir, 'gen/sky/bindings/dart_sky.dart'), + 'dart:sky.internals': os.path.join(src_root, 'sky/engine/bindings/sky_internals.dart'), + 'dart:sky_builtin_natives': os.path.join(src_root, 'sky/engine/bindings/builtin_natives.dart'), + } + self.packages_root = os.path.join(build_dir, 'gen/dart-pkg/packages') + + @property + def as_args(self): + return map(lambda item: '--url-mapping=%s,%s' % item, self.mappings.items()) + \ No newline at end of file