#!/usr/bin/env bash
# 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.

function follow_links() {
  file="$1"
  while [ -h "$file" ]; do
    # On Mac OS, readlink -f doesn't work.
    file="$(readlink "$file")"
  done
  echo "$file"
}

# Unlike $0, $BASH_SOURCE points to the absolute path of this file.
PROG_NAME="$(follow_links "$BASH_SOURCE")"

# Handle the case where dart-sdk/bin has been symlinked to.
BIN_DIR="$(cd "${PROG_NAME%/*}" ; pwd -P)"

SDK_DIR="$(cd "${BIN_DIR}/.." ; pwd -P)"

DART="$BIN_DIR/dart"

SNAPSHOT_DIR="$BIN_DIR/snapshots"
SNAPSHOT="$SNAPSHOT_DIR/dart2js.dart.snapshot"

unset EXTRA_OPTIONS
declare -a EXTRA_OPTIONS

if test -t 1; then
  # Stdout is a terminal.
  if test 8 -le `tput colors`; then
    # Stdout has at least 8 colors, so enable colors.
    EXTRA_OPTIONS+=('--enable-diagnostic-colors')
  fi
fi

unset EXTRA_VM_OPTIONS
declare -a EXTRA_VM_OPTIONS

if test -f "$SNAPSHOT"; then
  EXTRA_OPTIONS+=("--library-root=$SDK_DIR")
fi

case $0 in
  *_developer)
    EXTRA_VM_OPTIONS+=('--checked')
    ;;
esac

# We allow extra vm options to be passed in through an environment variable.
if [[ $DART_VM_OPTIONS ]]; then
  read -a OPTIONS <<< "$DART_VM_OPTIONS"
  EXTRA_VM_OPTIONS+=("${OPTIONS[@]}")
fi

exec "$DART" "${EXTRA_VM_OPTIONS[@]}" "$SNAPSHOT" "${EXTRA_OPTIONS[@]}" "$@"
