aboutsummaryrefslogtreecommitdiffstats
path: root/Library/ENV/scm/git
blob: 05148339a9500ec1b5fe339c4aac95c825deb32e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#!/bin/sh
# Make sure this shim uses the same Ruby interpreter that is used by Homebrew.
unset RUBYLIB
unset RUBYOPT
if [ -z "$HOMEBREW_RUBY_PATH" ]
then
  echo "${0##*/}: The build tool has reset ENV; --env=std required." >&2
  exit 1
fi
exec "$HOMEBREW_RUBY_PATH" -x "$0" "$@"
#!/usr/bin/env ruby -W0

# This script because we support $GIT, $HOMEBREW_SVN, etc., Xcode-only and
# no Xcode/CLT configurations. Order is careful to be what the user would want.

F = File.basename(__FILE__).freeze
D = File.expand_path(File.dirname(__FILE__)).freeze

def exec(*args)
  # prevent fork-bombs
  arg0 = args.first
  return if arg0 =~ /^#{F}/i || File.expand_path(arg0) == File.expand_path(__FILE__)
  super
end

case F.downcase
when "git" then %W[HOMEBREW_GIT GIT]
when "svn" then %W[HOMEBREW_SVN]
else []
end.each do |key|
  exec ENV[key], *ARGV if ENV[key] && File.executable?(ENV[key])
end

brew_version = File.expand_path("#{D}/../../../bin/#{F}")
exec brew_version, *ARGV if File.executable? brew_version

`/usr/bin/which -a #{F} 2>/dev/null`.split("\n").each do |path|
  exec path, *ARGV unless path == "/usr/bin/#{F}"
end

popup_stub = false
if File.executable? "/usr/bin/xcode-select"
  # xcode-select will return empty on no Xcode/CLT configuration.
  #   /usr/bin/<tool> will be a popup stub under such configuration.
  # xcrun hangs if xcode-select is set to "/"
  path = `/usr/bin/xcode-select -print-path 2>/dev/null`.chomp
  popup_stub = path.empty?
  if !popup_stub && path != "/"
    path = `/usr/bin/xcrun -find #{F} 2>/dev/null`.chomp
    exec path, *ARGV if File.executable? path
  end
end

path = "/Applications/Xcode.app/Contents/Developer/usr/bin/#{F}"
exec path, *ARGV if File.executable? path

path = "/usr/bin/#{F}"
exec path, *ARGV if !popup_stub && File.executable?(path)

abort "You must: brew install #{F}"