

# Set TMPDIR to a reasonable default if it isn't already set, so that mktmp(1) can be
# succinctly and portably used.
if [ "x${TMPDIR}" = "x" ] ; then
  TMPDIR="/tmp"
fi

# Record the directory from which this script was run in case
# we need to re-run it as part of the autoupdate.
ORIGINAL_WORKING_DIRECTORY="$PWD"

# Keep track of the project root directory.
PROJECT_ROOT="$PWD"

# Test for running buck daemon.
BUCKD_DIR="${PROJECT_ROOT}/.buckd"
BUCKD_LOG_FILE="${BUCKD_DIR}/buckd.log"
BUCKD_PID_FILE="${BUCKD_DIR}/buckd.pid"
BUCKD_PORT_FILE="${BUCKD_DIR}/buckd.port"
BUCKD_RUNNING=0
kill -0 `cat "$BUCKD_PID_FILE" 2> /dev/null` &> /dev/null || BUCKD_RUNNING=1

# Navigate to the root of the Buck project.
pushd "$BUCK_BIN_DIRECTORY" > /dev/null
pushd .. > /dev/null
BUCK_DIRECTORY="$PWD"

# If there is a .buckversion file in the project root, then make sure that Buck is at that version.
# The only way to override this is to include a .nobuckcheck file in the project root.
if [ -e "${PROJECT_ROOT}/.nobuckcheck" ]; then
  echo >&2 ":::"
  echo >&2 "::: '.nobuckcheck' file is present.  Not updating buck"
  echo >&2 ":::"
elif [ -e "${PROJECT_ROOT}/.buckversion" ]; then
  BUCK_COMMIT_HASH_AND_BRANCH=`cat ${PROJECT_ROOT}/.buckversion`

  BUCK_REQUIRED_VERSION=`echo ${BUCK_COMMIT_HASH_AND_BRANCH} | awk -F':' '{print $1}'`
  BUCK_REQUIRED_BRANCH=`echo ${BUCK_COMMIT_HASH_AND_BRANCH} |  awk -F':' '{print $2}'`

  # If the hash is in not in the user's repository, do a `git fetch`.
  if ! git cat-file -e "$BUCK_REQUIRED_VERSION"; then
    if [ -e "${BUCK_REQUIRED_BRANCH}" ]; then
      git fetch --all
    else
      git fetch origin $BUCK_REQUIRED_BRANCH
    fi
  fi


  BUCK_CURRENT_VERSION=`git rev-parse HEAD`
  
  function restartBuck()
  {
    # Rerun command with new version of buck.
    cd "$ORIGINAL_WORKING_DIRECTORY"
    "$SOURCE" "$@"
    exit $?
  }

  # Note that this test succeeds if you have local changes in your Buck repository that have not
  # been committed.
  if [ "$BUCK_REQUIRED_VERSION" != "$BUCK_CURRENT_VERSION" ]; then
    echo "Buck is at ${BUCK_CURRENT_VERSION},"
    echo "but should be ${BUCK_REQUIRED_VERSION}."
    echo "Buck is updating itself."
    echo "To disable this, add a '.nobuckcheck' file to your project root."
    echo "In general, you should only disable this if you are developing Buck."

    # Now that the version is guaranteed to be in the user's repository,
    # checkout that hash.
    git checkout $BUCK_REQUIRED_VERSION

    # Now that we have updated the repository, we should rebuild Buck.
    ant clean

    # Rerun this script after checking out the new version.
    restartBuck $@
  fi
fi

# Get current buck version.
BUCK_REPOSITORY_DIRTY=0
BUCK_CURRENT_VERSION="N/A"
BUCK_VERSION_TIMESTAMP=-1
if [ -d ".git" ]; then
  # Make sure buck gets passed the right version.
  BUCK_CURRENT_VERSION=`git rev-parse HEAD`
  BUCK_VERSION_TIMESTAMP=`git log --pretty=format:%ct -1 HEAD`

  # if the output of "git status -s" is non-empty.
  if [ -n "`git status -s`" ]; then
    BUCK_REPOSITORY_DIRTY=1
  fi
fi

# Compute a version string that uniquely incorporates the current git revision
# and local modifications (if any) to managed files that are relevant to
# building/running the buck application.
if [ "x${BUCK_REPOSITORY_DIRTY}" = "x0" ] ; then
  BUCK_VERSION_UID="${BUCK_CURRENT_VERSION}"
else
  if [ -d ".git" ] ; then
    function computeLocalHash()
    {
      # Get git tree for current revision.
      git_tree_in=`git log -n1 --pretty=format:%T HEAD`

      # Generate git tree as it would exist if current local changes were
      # committed.
      git_tree_out=$(
        git_index_file=`mktemp ${TMPDIR}/buck-git-index.XXXXXX` || exit 1
        export GIT_INDEX_FILE="${git_index_file}"
        git read-tree ${git_tree_in} || exit 1
        git update-index --add --remove `git diff --name-only HEAD` || exit 1
        git write-tree || exit 1
        rm -f "${git_index_file}"
      )

      # Compute UID based on relevant portions of the output git tree.
      buck_version_uid_input=`mktemp "${TMPDIR}/buck-version-uid-input.XXXXXX"` || exit 1
      git ls-tree --full-tree ${git_tree_out} > ${buck_version_uid_input} || exit 1
      BUCK_VERSION_UID=`git hash-object ${buck_version_uid_input}` || exit 1
      rm -f "${buck_version_uid_input}"
    }
    if [ -e "${PROJECT_ROOT}/.nobuckcheck" ]; then
      computeLocalHash
    else
      if [ -z "$BUCK_CLEAN_REPO_IF_DIRTY" ]; then
        echo ":: Your local buck directory is dirty, and therefore builds will"
        echo ":: not be able to use a distributed cache."
        echo ":: Do you want to clean your buck directory? [y/N]"
        read BUCK_CLEAN_REPO_IF_DIRTY
      fi
      if [[ "$(echo $BUCK_CLEAN_REPO_IF_DIRTY | tr '[:lower:]' '[:upper:]')" =~ ^Y.* ]]; then
        git clean -fd
        # Restart buck just in case the files we just deleted in any way
        # affected this file.
        restartBuck $@
      else
        computeLocalHash
      fi
    fi
  else
    BUCK_VERSION_UID="N/A"
  fi
fi

# Make sure that Buck has been built.
if [ ! -e "build/buck.jar" ]; then

  if [ $BUCKD_RUNNING -eq 0 ] && [ -e "$BUCKD_PID_FILE" ]; then
    echo "Killing buckd before building buck"
    kill `cat "$BUCKD_PID_FILE"` || true
  fi

  echo "No sign of buck.jar -- building Buck!"
  # Note the jar file will not be used,
  # but serves to represent whether everything has been built.
  ant clean && ant

  if [ $BUCKD_RUNNING -eq 0 ] && [ -e "${BUCK_BIN_DIRECTORY}/buckd" ]; then
    echo "Restarting buckd after building buck"
    "${BUCK_BIN_DIRECTORY}/buckd"
  fi
fi

# Pop back to the original directory.
popd > /dev/null
popd > /dev/null

# Path to Python interpreter will be tried to find. If not found, Jython will be used.
PYTHON_INTERP_FALLBACK=${BUCK_DIRECTORY}/bin/jython

# Note that if $RELATIVE_PATH_TO_BUCK_PY changes, then the default value of
# com.facebook.buck.json.BuildFileToJsonParser#PATH_TO_BUCK_PY 
# needs to be updated.
RELATIVE_PATH_TO_BUCK_PY=src/com/facebook/buck/parser/buck.py
PATH_TO_BUCK_PY="${BUCK_DIRECTORY}/$RELATIVE_PATH_TO_BUCK_PY"

# Run Buck "unpacked": specifying its individual classpath elements rather than from a
# single monolithic JAR file that includes all of its dependencies. This speeds up Buck development
# because `ant compile` takes much less time to rebuild Buck than `ant jar` does.
BUCK_JAVA_CLASSPATH="${BUCK_DIRECTORY}/src:\
${BUCK_DIRECTORY}/build/classes:\
${BUCK_DIRECTORY}/lib/args4j.jar:\
${BUCK_DIRECTORY}/lib/ddmlib-r21.jar:\
${BUCK_DIRECTORY}/lib/guava-15.0.jar:\
${BUCK_DIRECTORY}/lib/ini4j-0.5.2.jar:\
${BUCK_DIRECTORY}/lib/jackson-annotations-2.0.5.jar:\
${BUCK_DIRECTORY}/lib/jackson-core-2.0.5.jar:\
${BUCK_DIRECTORY}/lib/jackson-databind-2.0.5.jar:\
${BUCK_DIRECTORY}/lib/jsr305.jar:\
${BUCK_DIRECTORY}/lib/nailgun-server-0.9.2-SNAPSHOT.jar:\
${BUCK_DIRECTORY}/lib/sdklib.jar:\
${BUCK_DIRECTORY}/third-party/java/asm/asm-debug-all-4.1.jar:\
${BUCK_DIRECTORY}/third-party/java/astyanax/astyanax-cassandra-1.56.38.jar:\
${BUCK_DIRECTORY}/third-party/java/astyanax/astyanax-core-1.56.38.jar:\
${BUCK_DIRECTORY}/third-party/java/astyanax/astyanax-thrift-1.56.38.jar:\
${BUCK_DIRECTORY}/third-party/java/astyanax/cassandra-1.2.3.jar:\
${BUCK_DIRECTORY}/third-party/java/astyanax/cassandra-thrift-1.2.3.jar:\
${BUCK_DIRECTORY}/third-party/java/astyanax/commons-cli-1.1.jar:\
${BUCK_DIRECTORY}/third-party/java/astyanax/commons-codec-1.2.jar:\
${BUCK_DIRECTORY}/third-party/java/astyanax/commons-lang-2.6.jar:\
${BUCK_DIRECTORY}/third-party/java/astyanax/high-scale-lib-1.1.2.jar:\
${BUCK_DIRECTORY}/third-party/java/astyanax/joda-time-2.2.jar:\
${BUCK_DIRECTORY}/third-party/java/astyanax/libthrift-0.7.0.jar:\
${BUCK_DIRECTORY}/third-party/java/astyanax/log4j-1.2.16.jar:\
${BUCK_DIRECTORY}/third-party/java/astyanax/slf4j-api-1.7.2.jar:\
${BUCK_DIRECTORY}/third-party/java/astyanax/slf4j-log4j12-1.7.2.jar:\
${BUCK_DIRECTORY}/third-party/java/jetty/jetty-all-9.0.4.v20130625.jar:\
${BUCK_DIRECTORY}/third-party/java/jetty/servlet-api.jar:\
${BUCK_DIRECTORY}/third-party/java/neo4j/geronimo-jta_1.1_spec-1.1.1.jar:\
${BUCK_DIRECTORY}/third-party/java/neo4j/lucene-core-3.6.2.jar:\
${BUCK_DIRECTORY}/third-party/java/neo4j/neo4j-kernel-2.0.0-M05.jar:\
${BUCK_DIRECTORY}/third-party/java/neo4j/neo4j-lucene-index-2.0.0-M05.jar:\
${BUCK_DIRECTORY}/third-party/java/xz-java-1.3/xz-1.3.jar:\
"

BUCK_JAVA_ARGS="\
-XX:MaxPermSize=256m \
-Xmx1000m \
-Djava.awt.headless=true \
-Dbuck.testrunner_classes=${BUCK_DIRECTORY}/build/testrunner/classes \
-Dbuck.abi_processor_classes=${BUCK_DIRECTORY}/build/abi_processor/classes \
-Dbuck.path_to_emma_jar=${BUCK_DIRECTORY}/third-party/java/emma-2.0.5312/out/emma-2.0.5312.jar \
-Dbuck.test_util_no_tests_dir=true \
-Dbuck.path_to_python_interp=${PYTHON_INTERP_FALLBACK} \
-Dbuck.path_to_buck_py=${PATH_TO_BUCK_PY} \
-Dbuck.path_to_intellij_py=${BUCK_DIRECTORY}/src/com/facebook/buck/command/intellij.py \
-Dbuck.git_commit=${BUCK_CURRENT_VERSION} \
-Dbuck.git_commit_timestamp=${BUCK_VERSION_TIMESTAMP} \
-Dbuck.git_dirty=${BUCK_REPOSITORY_DIRTY} \
-Dbuck.quickstart_origin_dir=${BUCK_DIRECTORY}/src/com/facebook/buck/cli/quickstart/android \
-Dbuck.version_uid=${BUCK_VERSION_UID} \
-Dbuck.buckd_dir=${BUCKD_DIR} \
-Dlog4j.configuration=file:${BUCK_DIRECTORY}/config/log4j.properties \
${BUCK_EXTRA_JAVA_ARGS}"

# To debug BUCK, set BUCK_DEBUG_MODE in your environment to anything non-empty,
# then connect to port 8888.
if [ "$BUCK_DEBUG_MODE" ]; then
  arg="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8888"
  BUCK_JAVA_ARGS="$BUCK_JAVA_ARGS $arg"
fi
