#!/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.

set -e

REPO_DIR="$(git rev-parse --show-toplevel)"

# TODO(ahe): We currently rely on the Dart VM wrapper script to define
# DART_CONFIGURATION for locating platform.dill.
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 1
}

case "${1//_/-}" in
  abcompile) SCRIPT="${TOOL_DIR}/abcompile.dart";;
  analyzer-compile) SCRIPT="${TOOL_DIR}/analyzer_compile.dart";;
  compile) SCRIPT="${TOOL_DIR}/compile.dart";;
  compile-platform) SCRIPT="${TOOL_DIR}/compile_platform.dart";;
  compile-platform-dartk)
    SCRIPT="${TOOL_DIR}/compile_platform_dartk.dart"
    if [ "$#" != "2" ]; then
      stop "Usage: $1 file"
    fi
    ;;
  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";;
  run) SCRIPT="${TOOL_DIR}/run.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
    ;;
  *)
    stop "'$1' isn't a valid subcommand."
    ;;
esac

shift

exec "${DART_VM}" -c "${SCRIPT}" "$@"
