diff options
Diffstat (limited to 'Library/Homebrew/env.rb')
| -rw-r--r-- | Library/Homebrew/env.rb | 95 |
1 files changed, 94 insertions, 1 deletions
diff --git a/Library/Homebrew/env.rb b/Library/Homebrew/env.rb index 951d9f9dc..dbba19e8a 100644 --- a/Library/Homebrew/env.rb +++ b/Library/Homebrew/env.rb @@ -21,4 +21,97 @@ $root=Pathname.new(__FILE__).dirname.parent.parent.realpath $formula=$root+'Library'+'Formula' $cellar=$root+'Cellar' -HOMEBREW_VERSION='0.2'
\ No newline at end of file +HOMEBREW_VERSION='0.3' +HOMEBREW_CACHE=File.expand_path "~/Library/Caches/Homebrew" + + +######################################################################## utils +def ohai title + n=`tput cols`.strip.to_i-4 + puts "\033[0;34m==>\033[0;0;1m #{title[0,n]}\033[0;0m" +end + + +############################################################### class Pathname +# we enhance Pathname to make our code more legible +# of course this kind of thing is evil, but meh +class Pathname + def mv dst + FileUtils.mv to_s, dst + end + + def rename dst + dst=Pathname.new dst + dst.unlink if dst.exist? + mv dst + end + + def install src + if src.is_a? Array + src.each {|src| install src } + elsif File.exist? src + mkpath + if File.symlink? src + # we use the BSD mv command because FileUtils copies the target and + # not the link! I'm beginning to wish I'd used Python quite honestly! + `mv #{src} #{to_s}` + else + # we mv when possible as it is faster and you should only be using + # this function when installing from the temporary build directory + FileUtils.mv src, to_s + end + end + end + + def cp dst + if file? + FileUtils.cp to_s, dst + else + FileUtils.cp_r to_s, dst + end + end + + # extended to support the double extensions .tar.gz and .tar.bz2 + def extname + /(\.tar\.(gz|bz2))$/.match to_s + return $1 if $1 + return File.extname(to_s) + end + + # for filetypes we support, basename without extension + def stem + return File.basename(to_s, extname) + end + + def version + # eg. boost_1_39_0 + /((\d+_)+\d+)$/.match stem + return $1.gsub('_', '.') if $1 + + # eg. foobar-4.5.1-1 + /-((\d+\.)*\d+-\d+)$/.match stem + return $1 if $1 + + # eg. foobar-4.5.1 + /-((\d+\.)*\d+)$/.match stem + return $1 if $1 + + # eg. foobar-4.5.1b + /-((\d+\.)*\d+([abc]|rc\d))$/.match stem + return $1 if $1 + + # eg foobar-4.5.0-beta1 + /-((\d+\.)*\d+-beta\d+)$/.match stem + return $1 if $1 + + # eg. foobar4.5.1 + /((\d+\.)*\d+)$/.match stem + return $1 if $1 + + # eg. otp_src_R13B (this is erlang's style) + # eg. astyle_1.23_macosx.tar.gz + stem.scan /_([^_]+)/ do |match| + return match.first if /\d/.match $1 + end + end +end |
