| #!/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` |
| |
| # 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 \ |
| -Dbuck.daemon=false \ |
| -classpath \ |
| $BUCK_JAVA_CLASSPATH \ |
| com.facebook.buck.cli.Main "$@" |