From b016c2eae516c7a631a75b41b3425c24b868b796 Mon Sep 17 00:00:00 2001 From: Adam Vandenberg Date: Mon, 7 Jun 2010 10:40:21 -0700 Subject: [PATCH] Support external commands Homebrew will now look for external commands that are +x on PATH, named as "brew-" or "brew-.rb" * Shell scripts are exec'd with some HOMEBREW variables set in the ENV. * Ruby scripts are require'd directly. See: http://wiki.github.com/mxcl/homebrew/external-commands --- bin/brew | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/bin/brew b/bin/brew index 3b5ac4fedc..95b0772510 100755 --- a/bin/brew +++ b/bin/brew @@ -377,6 +377,23 @@ begin brew_doctor else + # Check for an external shell command + if system "/usr/bin/which -s brew-#{arg}" + # Add some Homebrew vars to the ENV + ['CACHE', 'CELLAR', 'LIBRARY_PATH', 'PREFIX', 'REPOSITORY'].each do |e| + ENV["HOMEBREW_#{e}"] = eval("HOMEBREW_#{e}") + end + exec("brew-#{arg}", *ARGV) + end + + # Check for an external ruby command + external_rb = `/usr/bin/which brew-#{arg}.rb`.chomp + unless external_rb.empty? + require external_rb + exit 0 + end + + # Check for git commands if ['branch', 'checkout', 'pull', 'push', 'rebase', 'reset'].include? arg onoe "Unknown command: #{arg} (did you mean 'git #{arg}'?)" else