74245deeac
If a Dart file does an import that is 'strange', this flag allows the imported URI to be understood by the analyzer so long as an explicit mapping of the URI to an absolute path to a .dart file is supplied with this flag. For example, a custom embedding of the Dart VM may refer to non-SDK libraries through its own URI scheme, e.g. import 'strange:things'; With the flag and Uri resolver added in this CL, the analyzer can find the Dart source for 'strange:things': dartanalyzer ... --url_mapping 'strange:things,/path/to/strange/things.dart' R=brianwilkerson@google.com Review URL: https://codereview.chromium.org//897593005 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@43788 260f80e4-7a28-3924-810f-c04153c831b5
111 lines
3.4 KiB
Python
Executable File
111 lines
3.4 KiB
Python
Executable File
#!/usr/bin/env python
|
|
#
|
|
# Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
|
|
# for details. All rights reserved. Use of this source code is governed by a
|
|
# BSD-style license that can be found in the LICENSE file.
|
|
|
|
"""Script to create snapshot bin file."""
|
|
|
|
import getopt
|
|
import optparse
|
|
import os
|
|
from os.path import basename, join
|
|
import sys
|
|
import utils
|
|
|
|
|
|
HOST_OS = utils.GuessOS()
|
|
HOST_CPUS = utils.GuessCpus()
|
|
DEBUG = False
|
|
VERBOSE = False
|
|
|
|
def BuildOptions():
|
|
result = optparse.OptionParser()
|
|
result.add_option("--executable",
|
|
action="store", type="string",
|
|
help="path to snapshot generator executable")
|
|
result.add_option("--output_bin",
|
|
action="store", type="string",
|
|
help="output file name into which snapshot in binary form is generated")
|
|
result.add_option("--script",
|
|
action="store", type="string",
|
|
help="Dart script for which snapshot is to be generated")
|
|
result.add_option("--package_root",
|
|
action="store", type="string",
|
|
help="path used to resolve package: imports.")
|
|
result.add_option("--url_mapping",
|
|
default=[],
|
|
action="append",
|
|
help=("mapping from url to file name, used when generating snapshots " +
|
|
"E.g.: --url_mapping=fileUri,/path/to/file.dart"))
|
|
result.add_option("-v", "--verbose",
|
|
help='Verbose output.',
|
|
default=False, action="store_true")
|
|
result.add_option("--target_os",
|
|
action="store", type="string",
|
|
help="Which os to run the executable on. Current choice is android")
|
|
result.add_option("--abi",
|
|
action="store", type="string",
|
|
help="Desired ABI for android target OS. armeabi-v7a or x86")
|
|
return result
|
|
|
|
|
|
def ProcessOptions(options):
|
|
if not options.executable:
|
|
sys.stderr.write('--executable not specified\n')
|
|
return False
|
|
if not options.output_bin:
|
|
sys.stderr.write('--output_bin not specified\n')
|
|
return False
|
|
if options.abi and not options.target_os == 'android':
|
|
sys.stderr.write('--abi requires --target_os android\n')
|
|
return False
|
|
return True
|
|
|
|
|
|
def Main():
|
|
# Parse options.
|
|
parser = BuildOptions()
|
|
(options, args) = parser.parse_args()
|
|
if not ProcessOptions(options):
|
|
parser.print_help()
|
|
return 1
|
|
|
|
# If there are additional arguments, report error and exit.
|
|
if args:
|
|
parser.print_help()
|
|
return 1
|
|
|
|
# Setup arguments to the snapshot generator binary.
|
|
script_args = ["--error_on_bad_type", "--error_on_bad_override"]
|
|
|
|
# Pass along the package_root if there is one.
|
|
if options.package_root:
|
|
script_args.append(''.join([ "--package_root=", options.package_root]))
|
|
|
|
# First setup the snapshot output filename.
|
|
script_args.append(''.join([ "--snapshot=", options.output_bin ]))
|
|
|
|
# Next setup all url mapping options specified.
|
|
for url_arg in options.url_mapping:
|
|
url_mapping_argument = ''.join(["--url_mapping=", url_arg ])
|
|
script_args.append(url_mapping_argument)
|
|
|
|
# Finally append the script name if one is specified.
|
|
if options.script:
|
|
script_args.append(options.script)
|
|
|
|
# Construct command line to execute the snapshot generator binary and invoke.
|
|
command = [ options.executable ] + script_args
|
|
try:
|
|
utils.RunCommand(command, outStream=sys.stderr, errStream=sys.stderr,
|
|
verbose=options.verbose, printErrorInfo=True)
|
|
except Exception as e:
|
|
return -1
|
|
|
|
return 0
|
|
|
|
|
|
if __name__ == '__main__':
|
|
sys.exit(Main())
|