#!/bin/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 dart_style/bin/format.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)"

DART="$BIN_DIR/dart"

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

DARTFMT="$DART_ROOT/third_party/pkg_tested/dart_style/bin/format.dart"

if [ -z "$DART_CONFIGURATION" ];
then
  DART_CONFIGURATION="ReleaseIA32"
fi

if [[ `uname` == 'Darwin' ]]; then
  BUILD_DIR="$DART_ROOT/xcodebuild/$DART_CONFIGURATION"
else
  BUILD_DIR="$DART_ROOT/out/$DART_CONFIGURATION"
fi

PACKAGE_ROOT="$BUILD_DIR/packages/"

exec "$DART" "--package-root=$PACKAGE_ROOT" "$DARTFMT" "$@"
