#!/usr/bin/env bash
# Copyright (c) 2013, 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.

# Run dartanalyzer.dart on the Dart VM. This script assumes the Dart repo's
# directory structure.

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)"

SDK_ARG="--dart-sdk=$SDK_DIR"

DART="$BIN_DIR/dart"

unset EXTRA_VM_OPTIONS
declare -a EXTRA_VM_OPTIONS

case $0 in
  *_developer)
    EXTRA_VM_OPTIONS+=('--enable-asserts')
    ;;
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

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

ANALYZER="$DART_ROOT/pkg/analyzer_cli/bin/analyzer.dart"

DEV_OPTIONS="--use-analysis-driver-memory-byte-store"

exec "$DART" "--packages=$DART_ROOT/.packages" "${EXTRA_VM_OPTIONS[@]}" "$ANALYZER" "$DEV_OPTIONS" "$SDK_ARG" "$@"
