aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/env.rb
diff options
context:
space:
mode:
Diffstat (limited to 'Library/Homebrew/env.rb')
-rw-r--r--Library/Homebrew/env.rb95
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