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

set -e

SCRIPT_DIR=$(dirname $0)
DART_ANALYZER_HOME=$(dirname $SCRIPT_DIR)

FOUND_BATCH=0
FOUND_SDK=0
for ARG in "$@"
do
  case $ARG in
    -batch|--batch)
      FOUND_BATCH=1
      ;;
    --dart-sdk)
      FOUND_SDK=1
      ;;
    *)
      ;;
  esac
done

DART_SDK=""
if [ $FOUND_SDK = 0 ] ; then
  if [ -f $DART_ANALYZER_HOME/lib/core/core_runtime.dart ] ; then
    DART_SDK="--dart-sdk $DART_ANALYZER_HOME"
  else
    DART_SDK_HOME=$(dirname $DART_ANALYZER_HOME)/dart-sdk
    if [ -d $DART_SDK_HOME ] ; then
      DART_SDK="--dart-sdk $DART_SDK_HOME"
    else
      DART_SDK_HOME=$(dirname $DART_SDK_HOME)/dart-sdk
      if [ -d $DART_SDK_HOME ] ; then
        DART_SDK="--dart-sdk $DART_SDK_HOME"
      else
        echo "Couldn't find Dart SDK. Specify with --dart-sdk cmdline argument"
      fi
    fi
  fi
fi

if [ -f $DART_SDK_HOME/util/analyzer/dart_analyzer.jar ] ; then
  DART_ANALYZER_LIBS=$DART_SDK_HOME/util/analyzer
elif [ -f $DART_ANALYZER_HOME/util/analyzer/dart_analyzer.jar ] ; then
  DART_ANALYZER_LIBS=$DART_ANALYZER_HOME/util/analyzer
else
  echo "Configuration problem. Couldn't find dart_analyzer.jar."
  exit 1
fi

if [ -x /usr/libexec/java_home ]; then
  export JAVA_HOME=$(/usr/libexec/java_home -v '1.6+')
fi

EXTRA_JVMARGS="-Xss2M "
OS=`uname | tr "[A-Z]" "[a-z]"`
if [ "$OS" == "darwin" ] ; then
  # Bump up the heap on Mac VMs, some of which default to 128M or less.
  # Users can specify DART_JVMARGS in the environment to override this
  # setting.
  EXTRA_JVMARGS+=" -Xmx256M -client "
else
  # On other architectures
  # -batch invocations will do better with a server vm
  # invocations for analyzing a single file do better with a client vm
  if [ $FOUND_BATCH = 0 ] ; then
    EXTRA_JVMARGS+=" -client "
  fi
fi

exec java $EXTRA_JVMARGS $DART_JVMARGS -ea -classpath "@CLASSPATH@" \
  com.google.dart.compiler.DartCompiler ${DART_SDK} $@
