| Index: sky/tools/setup-dart-analyzer
|
| diff --git a/sky/tools/setup-dart-analyzer b/sky/tools/setup-dart-analyzer
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..434774e5a5015526a820b976eddee224c2f12d8c
|
| --- /dev/null
|
| +++ b/sky/tools/setup-dart-analyzer
|
| @@ -0,0 +1,68 @@
|
| +#!/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 subprocess
|
| +import sys
|
| +import os
|
| +import yaml
|
| +
|
| +
|
| +SKY_TOOLS_DIR = os.path.dirname(os.path.abspath(__file__))
|
| +SRC_ROOT = os.path.dirname(os.path.dirname(SKY_TOOLS_DIR))
|
| +SKY_SDK_DIR = os.path.join(SRC_ROOT, 'sky', 'sdk')
|
| +SKY_PUBSPEC = os.path.join(SKY_SDK_DIR, 'pubspec.yaml')
|
| +SKY_PUBSPEC_LOCK = os.path.join(SKY_SDK_DIR, 'pubspec.lock')
|
| +SDK_EXT = os.path.join(SKY_SDK_DIR, 'lib', '_sdkext')
|
| +
|
| +SDK_EXT_TEMPLATE = '''{
|
| + "dart:sky": "%(build_dir)s/gen/dart-pkg/sky/sdk_ext/dart_sky.dart",
|
| + "dart:sky.internals": "%(build_dir)s/gen/dart-pkg/sky/sky_internals.dart",
|
| + "dart:sky_builtin_natvies": "%(build_dir)s../sdk_ext/builtin_natives.dart"
|
| +}'''
|
| +
|
| +def version_for_pubspec(pubspec_path):
|
| + with open(pubspec_path, 'r') as stream:
|
| + dependency_spec = yaml.load(stream)
|
| + return dependency_spec['version']
|
| +
|
| +
|
| +def entry_for_dependency(dart_pkg_dir, dependency):
|
| + dependency_path = os.path.join(dart_pkg_dir, dependency)
|
| + version = version_for_pubspec(os.path.join(dependency_path, 'pubspec.yaml'))
|
| + return {
|
| + 'description': {
|
| + 'path': os.path.relpath(dependency_path, SKY_SDK_DIR),
|
| + 'relative': True,
|
| + },
|
| + 'source': 'path',
|
| + 'version': version,
|
| + }
|
| +
|
| +
|
| +def main():
|
| + parser = argparse.ArgumentParser(description='Adds files to the source tree to make the dart analyzer happy')
|
| + parser.add_argument('build_dir', type=str, help='Path the build directory to use for build artifacts')
|
| + args = parser.parse_args()
|
| +
|
| + dart_pkg_dir = os.path.join(args.build_dir, 'gen', 'dart-pkg')
|
| + packages = {}
|
| +
|
| + with open(SKY_PUBSPEC, 'r') as stream:
|
| + spec = yaml.load(stream)
|
| + for dependency in spec['dependencies'].keys():
|
| + packages[dependency] = entry_for_dependency(dart_pkg_dir, dependency)
|
| +
|
| + lock = { 'packages': packages }
|
| + with open(SKY_PUBSPEC_LOCK, 'w') as stream:
|
| + yaml.dump(lock, stream=stream, default_flow_style=False)
|
| +
|
| + with open(SDK_EXT, 'w') as stream:
|
| + rebased_build_dir = os.path.relpath(args.build_dir, os.path.dirname(SDK_EXT))
|
| + stream.write(SDK_EXT_TEMPLATE % { 'build_dir': rebased_build_dir })
|
| +
|
| +
|
| +if __name__ == '__main__':
|
| + sys.exit(main())
|
|
|