aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
Diffstat (limited to 'Library')
-rwxr-xr-xLibrary/Homebrew/unittest.rb9
-rw-r--r--Library/Homebrew/utils.rb21
2 files changed, 30 insertions, 0 deletions
diff --git a/Library/Homebrew/unittest.rb b/Library/Homebrew/unittest.rb
index ba93e33ec..ae8b0c1bc 100755
--- a/Library/Homebrew/unittest.rb
+++ b/Library/Homebrew/unittest.rb
@@ -415,6 +415,15 @@ class BeerTasting <Test::Unit::TestCase
assert_equal 10.7, f+0.1
end
+ def test_arch_for_command
+ # NOTE only works on Snow Leopard I bet, pick a better file!
+ arches=arch_for_command '/usr/bin/svn'
+ assert_equal 3, arches.count
+ assert arches.include?(:x86_64)
+ assert arches.include?(:i386)
+ assert arches.include?(:ppc7400)
+ end
+
def test_pathname_plus_yeast
nostdout do
assert_nothing_raised do
diff --git a/Library/Homebrew/utils.rb b/Library/Homebrew/utils.rb
index 7beaba8ad..ff58aabfd 100644
--- a/Library/Homebrew/utils.rb
+++ b/Library/Homebrew/utils.rb
@@ -99,3 +99,24 @@ def exec_editor *args
# we don't have to escape args, and escaping 100% is tricky
exec *(editor.split+args)
end
+
+# provide an absolute path to a command or this function will search the PATH
+def arch_for_command cmd
+ archs = []
+ cmd = `which #{cmd}` if not Pathname.new(cmd).absolute?
+
+ IO.popen("file #{cmd}").readlines.each do |line|
+ case line
+ when /Mach-O executable ppc/
+ archs << :ppc7400
+ when /Mach-O 64-bit executable ppc64/
+ archs << :ppc64
+ when /Mach-O executable i386/
+ archs << :i386
+ when /Mach-O 64-bit executable x86_64/
+ archs << :x86_64
+ end
+ end
+
+ return archs
+end