#!/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 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="ReleaseX64"
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" "$@"
