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

# Run pub.dart on the Dart VM. This script is only used when running pub from
# within the Dart source repo. The shipped SDK instead uses "pub_sdk", which is
# renamed to "pub" when the SDK is built.

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

SNAPSHOT="$BIN_DIR/snapshots/pub.dart.snapshot"

unset VM_OPTIONS
declare -a VM_OPTIONS

# Give the VM extra memory for dart2js.
# TODO(rnystrom): Remove when #8355 is fixed.
VM_OPTIONS+=("--old_gen_heap_size=1024")

# Allow extra VM options to be passed in through an environment variable.
if [[ $DART_VM_OPTIONS ]]; then
  read -a OPTIONS <<< "$DART_VM_OPTIONS"
  VM_OPTIONS+=("${OPTIONS[@]}")
fi

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

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

# Use the Dart binary in the built SDK so pub can find the version file next
# to it.
DART="$BUILD_DIR/dart-sdk/bin/dart"
PACKAGES_DIR="$BUILD_DIR/pub_packages/"

# Compile async/await down to vanilla Dart.
# TODO(rnystrom): Remove this when #104 is fixed.
ASYNC_COMPILER="$SDK_DIR/lib/_internal/pub/bin/async_compile.dart"
# Disabled "$DART" "--package-root=$PACKAGES_DIR" "$ASYNC_COMPILER" "$BUILD_DIR"

# Run the async/await compiled pub.
PUB="$SDK_DIR/lib/_internal/pub_generated/bin/pub.dart"
exec "$DART" "${VM_OPTIONS[@]}" "--package-root=$PACKAGES_DIR" "$PUB" "$@"
