mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
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:
parent
340db897c2
commit
5d7a476bc5
@ -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
51
tools/skydoc.py
Executable 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())
|
||||
20
tools/skypy/url_mappings.py
Normal file
20
tools/skypy/url_mappings.py
Normal 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())
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user