brew diy command

Automagically determines prefix to install to for DIY installations.

README amended.
This commit is contained in:
Max Howell 2009-08-12 13:43:51 +01:00
parent 355bfc1751
commit 140bfc5592
4 changed files with 30 additions and 3 deletions

View File

@ -15,7 +15,7 @@ _brew_to_completion()
prev="${COMP_WORDS[COMP_CWORD-1]}" prev="${COMP_WORDS[COMP_CWORD-1]}"
# We only complete unabbreviated commands... # 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 # Subcommand list
if [[ ( ${COMP_CWORD} -eq 1 ) && ( ${COMP_WORDS[0]} == brew ) ]] ; then if [[ ( ${COMP_CWORD} -eq 1 ) && ( ${COMP_WORDS[0]} == brew ) ]] ; then

View File

@ -186,6 +186,24 @@ def prune
end 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
class Cleaner class Cleaner
def initialize f def initialize f

5
README
View File

@ -46,6 +46,11 @@ Here's why you may prefer Homebrew to the alternatives:
make install make install
brew ln wget 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 This means you can also install multiple versions of the same package and
switch on demand. switch on demand.

View File

@ -66,6 +66,7 @@ begin
else else
Process.wait pid Process.wait pid
end 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 exit! $? if $? != 0 # exception in other brew will be visible on screen
end end
@ -114,6 +115,9 @@ begin
exec "mate", *ARGV.named.collect {|name| make name} exec "mate", *ARGV.named.collect {|name| make name}
end end
when 'diy'
puts diy
when 'info', 'abv' when 'info', 'abv'
if ARGV.named_empty? if ARGV.named_empty?
puts `ls #{HOMEBREW_CELLAR} | wc -l`.strip+" kegs, "+HOMEBREW_CELLAR.abv puts `ls #{HOMEBREW_CELLAR} | wc -l`.strip+" kegs, "+HOMEBREW_CELLAR.abv