| #!/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}" "$@" |