|  | #!/bin/bash | 
|  |  | 
|  | # Exit on error. | 
|  | set -e | 
|  |  | 
|  | # $BUCK_BIN_DIRECTORY is the directory that hosts this script. Solution taken from: | 
|  | # http://stackoverflow.com/questions/59895/can-a-bash-script-tell-what-directory-its-stored-in | 
|  | SOURCE="${BASH_SOURCE[0]}" | 
|  | DIR="$( dirname "$SOURCE" )" | 
|  | while [ -h "$SOURCE" ] | 
|  | do | 
|  | SOURCE="$(readlink "$SOURCE")" | 
|  | [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" | 
|  | DIR="$( cd -P "$( dirname "$SOURCE"  )" && pwd )" | 
|  | done | 
|  | DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" | 
|  | BUCK_BIN_DIRECTORY=$DIR | 
|  |  | 
|  | # Set environment and update buck if required. | 
|  | # TODO(user): refactor buck_common in to functions rather than sourcing | 
|  | source "${BUCK_BIN_DIRECTORY}/buck_common" | 
|  |  | 
|  | # If a buck daemon is running, use it. | 
|  | BUCK_CLIENT="${BUCK_DIRECTORY}/build/ng" | 
|  | if [ $BUCKD_RUNNING -eq 0 ] && [ -e "$BUCK_CLIENT" ]; then | 
|  |  | 
|  | echo "Using buckd." 1>&2 | 
|  |  | 
|  | BUCKD_PORT=`cat ${BUCKD_DIR}/buckd.port` | 
|  |  | 
|  | # Tell buckd whether the client is talking to a tty. | 
|  | if [ -t 1 ]; then | 
|  | export BUCKD_COLOR_DEFAULT="always" | 
|  | else | 
|  | export BUCKD_COLOR_DEFAULT="never" | 
|  | fi | 
|  |  | 
|  | # Disable exit on error as exit code 2 is used to indicate the daemon is busy. | 
|  | set +e | 
|  | $BUCK_CLIENT --nailgun-port $BUCKD_PORT com.facebook.buck.cli.Main "$@" | 
|  | BUCKD_STATUS=$? | 
|  | set -e | 
|  |  | 
|  | # If buck daemon is not busy, return exit code. | 
|  | if [ $BUCKD_STATUS -ne 2 ]; then | 
|  | exit $BUCKD_STATUS | 
|  | fi | 
|  |  | 
|  | echo "Daemon is busy, starting new buck process." 1>&2 | 
|  |  | 
|  | fi | 
|  |  | 
|  | # Daemon is not running, or is busy so start buck process. | 
|  | java \ | 
|  | $BUCK_JAVA_ARGS \ | 
|  | -classpath \ | 
|  | $BUCK_JAVA_CLASSPATH \ | 
|  | com.facebook.buck.cli.Main "$@" |