|  | #!/bin/bash | 
|  | # Copyright (c) 2017, 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. | 
|  |  | 
|  | # TODO(ahe): This should be replaced by a Dart script that works on Windows, | 
|  | # Linux, and Mac. | 
|  |  | 
|  | set -e | 
|  |  | 
|  | REPO_DIR="$(cd ${BASH_SOURCE%/*} && git rev-parse --show-toplevel)" | 
|  |  | 
|  | DART_VM=${DART_VM-"${REPO_DIR}/sdk/bin/dart"} | 
|  |  | 
|  | TOOL_DIR="${REPO_DIR}/pkg/front_end/tool/_fasta" | 
|  |  | 
|  | KERNEL_BIN="${REPO_DIR}/pkg/kernel/bin" | 
|  |  | 
|  | function stop { | 
|  | echo "$@" >&2 | 
|  | exit 2 | 
|  | } | 
|  |  | 
|  | export DART_CONFIGURATION=${DART_CONFIGURATION:-ReleaseX64} | 
|  |  | 
|  | EXTRA_VM_ARGS=() | 
|  |  | 
|  | while [[ "$1" == -* ]]; do | 
|  | EXTRA_VM_ARGS+=("$1") | 
|  | shift | 
|  | done | 
|  |  | 
|  | case "${1//_/-}" in | 
|  | abcompile) SCRIPT="${TOOL_DIR}/abcompile.dart";; | 
|  | compile) SCRIPT="${TOOL_DIR}/compile.dart";; | 
|  | compile-platform) SCRIPT="${TOOL_DIR}/compile_platform.dart";; | 
|  | log) SCRIPT="${TOOL_DIR}/log_analyzer.dart";; | 
|  | logd) SCRIPT="${TOOL_DIR}/log_collector.dart";; | 
|  | outline) SCRIPT="${TOOL_DIR}/outline.dart";; | 
|  | parser) SCRIPT="${TOOL_DIR}/parser.dart";; | 
|  | scanner) SCRIPT="${TOOL_DIR}/scanner.dart";; | 
|  | dump-ir) | 
|  | SCRIPT="${KERNEL_BIN}/dump.dart" | 
|  | if [ "$#" = "2" ]; then | 
|  | # Write to stdout if no target is given. | 
|  | set -- "$@" /dev/fd/1 | 
|  | fi | 
|  | if [ "$#" != "3" ]; then | 
|  | stop "Usage: $1 dillfile [output]" | 
|  | fi | 
|  | ;; | 
|  | testing) | 
|  | SCRIPT="${REPO_DIR}/pkg/testing/bin/testing.dart" | 
|  | set -- "$@" "--config=${REPO_DIR}/pkg/front_end/testing.json" | 
|  | ;; | 
|  | generate-messages) SCRIPT="${TOOL_DIR}/generate_messages.dart";; | 
|  | generate-experimental-flags) SCRIPT="${TOOL_DIR}/generate_experimental_flags.dart";; | 
|  | *) | 
|  | stop "'$1' isn't a valid subcommand." | 
|  | ;; | 
|  | esac | 
|  |  | 
|  | shift | 
|  |  | 
|  | exec "${DART_VM}" "${EXTRA_VM_ARGS[@]}" --enable-asserts "${SCRIPT}" "$@" |