#!/bin/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() {
  while [ -h "$1" ]; do
    # On Mac OS, readlink -f doesn't work.
    1="$(readlink "$1")"
  done
  echo "$1"
}

# 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="$(follow_links "$(cd "${PROG_NAME%/*}" ; pwd -P)")"

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

DART2JS="$SDK_DIR/lib/_internal/compiler/implementation/dart2js.dart"

DART="$BIN_DIR/dart"

SNAPSHOT="${DART2JS}.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[${#EXTRA_OPTIONS[@]}]='--enable-diagnostic-colors'
  fi
fi

unset EXTRA_VM_OPTIONS
declare -a EXTRA_VM_OPTIONS

if test -f "$SNAPSHOT"; then
  # TODO(ahe): Remove the following line when we are relatively sure it works.
  echo Using snapshot "$SNAPSHOT" 1>&2
  EXTRA_VM_OPTIONS[${#EXTRA_VM_OPTIONS[@]}]="--use-script-snapshot=$SNAPSHOT"
fi

# Tell the VM to grow the heap more aggressively. This should only
# be necessary temporarily until the VM is better at detecting how
# applications use memory.
# TODO(ahe): Remove this option (http://dartbug.com/6495).
EXTRA_VM_OPTIONS[${#EXTRA_VM_OPTIONS[@]}]='--heap_growth_rate=512'

case $0 in
  *_developer)
    EXTRA_VM_OPTIONS[${#EXTRA_VM_OPTIONS[@]}]='--checked'
    ;;
esac

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