#!/bin/bash
# Historically, xcrun has had various bugs, and in some cases it didn't
# work at all (e.g. CLT-only in the Xcode 4.3 era). This script emulates
# it and attempts to avoid these issues.

# These could be used in conjunction with `--sdk` which ignores SDKROOT.
if [[ "$*" =~ (^| )-?-show-sdk-(path|version|build) && -n "$HOMEBREW_DEVELOPER_DIR" ]]; then
  export DEVELOPER_DIR=$HOMEBREW_DEVELOPER_DIR
else
  # Some build tools set DEVELOPER_DIR, so discard it
  unset DEVELOPER_DIR
fi

if [[ -z "$SDKROOT" && -n "$HOMEBREW_SDKROOT" ]]; then
  export SDKROOT=$HOMEBREW_SDKROOT
fi

if [ $# -eq 0 ]; then
  exec /usr/bin/xcrun "$@"
fi

case "$1" in
  -*) exec /usr/bin/xcrun "$@" ;;
esac

arg0=$1
shift

exe="/usr/bin/${arg0}"
if [ -x "$exe" ]; then
  if [ -n "$HOMEBREW_PREFER_CLT_PROXIES" ]; then
    exec "$exe" "$@"
  elif [ -z "$HOMEBREW_SDKROOT" -o ! -d "$HOMEBREW_SDKROOT" ]; then
    exec "$exe" "$@"
  fi
fi

SUPERBIN=$(cd "${0%/*}" && pwd -P)

exe=$(/usr/bin/xcrun --find "$arg0" 2>/dev/null)
if [ -x "$exe" -a "${exe%/*}" != "$SUPERBIN" ]; then
  exec "$exe" "$@"
fi

old_IFS=$IFS
IFS=:
for path in $PATH; do
  if [ "$path" = "$SUPERBIN" ]; then
    continue
  fi

  exe="${path}/${arg0}"
  if [ -x "$exe" ]; then
    exec "$exe" "$@"
  fi
done
IFS=$old_IFS

echo >&2 "
Failed to execute $arg0 $@

Xcode and/or the CLT appear to be misconfigured. Try one or both of the following:
  xcodebuild -license
  sudo xcode-select -switch /path/to/Xcode.app
"
exit 1
