Add skydoc.py, a tool for running dartdoc

This CL starts us down the path of generating documentation from our source.

R=eseidel@chromium.org, eseidel@google.com

Review URL: https://codereview.chromium.org/1218663011 .
This commit is contained in:
Adam Barth 2015-07-08 08:26:11 -07:00
parent 340db897c2
commit 5d7a476bc5
3 changed files with 82 additions and 12 deletions

View File

@ -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:

51
tools/skydoc.py Executable file
View File

@ -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())

View File

@ -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())