| Index: tools/create_pub_snapshot.py
|
| diff --git a/tools/create_pub_snapshot.py b/tools/create_pub_snapshot.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..5ba0beba921e6419cdd06c842dffb2c0d70e9d3e
|
| --- /dev/null
|
| +++ b/tools/create_pub_snapshot.py
|
| @@ -0,0 +1,61 @@
|
| +#!/usr/bin/env python
|
| +
|
| +# Copyright (c) 2014 The Dart Authors. All rights reserved.
|
| +# Use of this source code is governed by a BSD-style license that can be
|
| +# found in the LICENSE file.
|
| +
|
| +"""
|
| +This script runs the async/await compiler on pub and then compiles the output
|
| +of that to a snapshot.
|
| +
|
| +Usage: create_pub_snapshot.py <dart> <compiler> <package root> <output dir>
|
| +
|
| +When #104 is fixed, this script is no longer needed. Instead, replace the
|
| +generate_pub_snapshot action in utils/pub.gyp with:
|
| +
|
| + 'action': [
|
| + '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)dart<(EXECUTABLE_SUFFIX)',
|
| + '--package-root=<(PRODUCT_DIR)/pub_packages/',
|
| + '--snapshot=<(SHARED_INTERMEDIATE_DIR)/pub.dart.snapshot',
|
| + '../../sdk/lib/_internal/pub/bin/pub.dart',
|
| + ]
|
| +"""
|
| +
|
| +import os
|
| +import subprocess
|
| +import sys
|
| +
|
| +
|
| +def Main():
|
| + if len(sys.argv) < 5:
|
| + raise Exception("""Not enough arguments.
|
| +
|
| +Usage: create_pub_snapshot.py <dart> <compiler> <package root> <output file>""")
|
| +
|
| + dart_path = sys.argv[1]
|
| + compiler = sys.argv[2]
|
| + package_root = sys.argv[3]
|
| + output_dir = sys.argv[4]
|
| +
|
| + # Run the async compiler.
|
| + status = subprocess.call([
|
| + dart_path,
|
| + '--package-root=' + package_root,
|
| + compiler,
|
| + output_dir,
|
| + '--silent'
|
| + ])
|
| + if status != 0: return status
|
| +
|
| + # Generate the snapshot from the output of that.
|
| + status = subprocess.call([
|
| + dart_path,
|
| + '--package-root=' + package_root,
|
| + '--snapshot=' + os.path.join(output_dir, 'pub.dart.snapshot'),
|
| + os.path.join(output_dir, 'pub_async/bin/pub.dart')
|
| + ])
|
| + if status != 0: return status
|
| +
|
| +
|
| +if __name__ == '__main__':
|
| + sys.exit(Main())
|
|
|