aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Howell2009-08-12 13:43:51 +0100
committerMax Howell2009-08-12 13:43:51 +0100
commitbfbcdb2334fe21439e25349f05e4cee6d32a53a2 (patch)
tree5fd9e8e88f73b81e0af1160d441fff59fdd6853b
parent7e45879baae7708015fb8a52f311814fb8db66cb (diff)
downloadhomebrew-bfbcdb2334fe21439e25349f05e4cee6d32a53a2.tar.bz2
brew diy command
Automagically determines prefix to install to for DIY installations. README amended.
-rw-r--r--Library/Contributions/brew_bash_completion.sh2
-rw-r--r--Library/Homebrew/brew.h.rb18
-rw-r--r--README9
-rwxr-xr-xbin/brew4
4 files changed, 30 insertions, 3 deletions
diff --git a/Library/Contributions/brew_bash_completion.sh b/Library/Contributions/brew_bash_completion.sh
index f33204d36..7f03523fe 100644
--- a/Library/Contributions/brew_bash_completion.sh
+++ b/Library/Contributions/brew_bash_completion.sh
@@ -15,7 +15,7 @@ _brew_to_completion()
prev="${COMP_WORDS[COMP_CWORD-1]}"
# We only complete unabbreviated commands...
- actions="edit homepage info install list link make uninstall"
+ actions="diy edit homepage info install list link make uninstall"
# Subcommand list
if [[ ( ${COMP_CWORD} -eq 1 ) && ( ${COMP_WORDS[0]} == brew ) ]] ; then
diff --git a/Library/Homebrew/brew.h.rb b/Library/Homebrew/brew.h.rb
index f3dee102a..9f981f116 100644
--- a/Library/Homebrew/brew.h.rb
+++ b/Library/Homebrew/brew.h.rb
@@ -186,6 +186,24 @@ def prune
end
+def diy
+ path=Pathname.getwd
+ version=path.version
+ path.basename.to_s =~ /(.*?)-?#{version}/
+ name=$1
+
+ raise "Couldn't determine version, try --set-version" if version.nil? or version.empty?
+ raise "Couldn't determine name, try --set-name" if name.nil? or name.empty?
+
+ prefix=HOMEBREW_CELLAR+name+version
+
+ if File.file? 'CMakeLists.txt'
+ "-DCMAKE_INSTALL_PREFIX=#{prefix}"
+ elsif File.file? 'Makefile.am'
+ "--prefix=#{prefix}"
+ end
+end
+
################################################################ class Cleaner
class Cleaner
def initialize f
diff --git a/README b/README
index e981eda09..8ff466ed1 100644
--- a/README
+++ b/README
@@ -46,6 +46,11 @@ Here's why you may prefer Homebrew to the alternatives:
make install
brew ln wget
+ Or Homebrew can figure out the prefix:
+
+ ./configure `brew diy`
+ cmake . `brew diy`
+
This means you can also install multiple versions of the same package and
switch on demand.
@@ -150,7 +155,7 @@ Update package list:
cd /usr/local && git pull origin masterbrew [1]
Delete a package:
- brew rm wget OR rm -rf /usr/local/Cellar/wget && brew prune
+ brew rm wget OR rm -rf /usr/local/Cellar/wget && brew prune
List all files in a package:
brew list wget OR find /usr/local/Cellar/wget
@@ -168,7 +173,7 @@ Show expensive packages:
du -md1 /usr/local/Cellar
View the packages brew has downloaded and cached:
- ls `brew --cache` OR ls ~/Library/Caches/Homebrew
+ ls `brew --cache` OR ls ~/Library/Caches/Homebrew
With Homebrew this is all Ruby. If you want to improve the package
installation, amend the Ruby script. If you want to improve the brew command
diff --git a/bin/brew b/bin/brew
index 06c5a2cba..575694fdb 100755
--- a/bin/brew
+++ b/bin/brew
@@ -66,6 +66,7 @@ begin
else
Process.wait pid
end
+ #FIXME I don't think $? represents the exit code from the child fork…
exit! $? if $? != 0 # exception in other brew will be visible on screen
end
@@ -114,6 +115,9 @@ begin
exec "mate", *ARGV.named.collect {|name| make name}
end
+ when 'diy'
+ puts diy
+
when 'info', 'abv'
if ARGV.named_empty?
puts `ls #{HOMEBREW_CELLAR} | wc -l`.strip+" kegs, "+HOMEBREW_CELLAR.abv