diff --git a/Cellar/homebrew/brew b/Cellar/homebrew/brew index 184d9f9eb5c796e72b37cd47eb9ebc527d805822..aac825708751d16730b55665a71f57b6d19efe68 100755 --- a/Cellar/homebrew/brew +++ b/Cellar/homebrew/brew @@ -6,14 +6,27 @@ require 'pathname' $root = Pathname.new(__FILE__).realpath.dirname.parent.parent def prune + n=0 + dirs=Array.new $root.find do |path| if path.directory? - name=path.basename - Find.prune if name == 'Cellar' or name == 'Formula' + name=path.relative_path_from($root).to_s + if name == '.git' or name == 'Cellar' or name == 'Formula' + Find.prune + else + dirs<<path + end elsif path.symlink? - path.unlink unless path.readlink.exist? + resolved_path=path.dirname+path.readlink + unless resolved_path.exist? + path.unlink + n+=1 + end end end + # entries lists '.' and '..' so 2 is minimum basically + dirs.sort.reverse_each { |d| d.rmdir if d.children.length == 0 } + return n end case ARGV[0] @@ -48,12 +61,16 @@ case ARGV[0] to.mkpath unless to.exist? elsif from.file? tod=to.dirname - Dir.chdir(tod) { `ln -s "#{from.relative_path_from tod}"` } + Dir.chdir(tod) do + `ln -sf "#{from.relative_path_from tod}"` + n+=1 + end end end + puts "Created #{n} links" when 'prune', 'pasteurize' then - prune + puts "Pruned #{prune} files" else puts "usage: #{$0} [prune] [ln path] [install pkg]"