aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
Diffstat (limited to 'Library')
-rwxr-xr-xLibrary/Contributions/examples/brew-which.rb53
1 files changed, 53 insertions, 0 deletions
diff --git a/Library/Contributions/examples/brew-which.rb b/Library/Contributions/examples/brew-which.rb
new file mode 100755
index 000000000..a331e9f45
--- /dev/null
+++ b/Library/Contributions/examples/brew-which.rb
@@ -0,0 +1,53 @@
+require 'extend/pathname'
+
+REAL_CELLAR = HOMEBREW_CELLAR.realpath
+
+class String
+ def starts_with?(prefix)
+ prefix = prefix.to_s
+ self[0, prefix.length] == prefix
+ end
+end
+
+class Pathname
+ def starts_with?(prefix)
+ prefix = prefix.to_s
+ self.to_s[0, prefix.length] == prefix
+ end
+end
+
+
+def audit
+ brew_links = Array.new
+ version_map = Hash.new
+
+ # paths=%w[bin sbin etc lib include share].collect {|d| HOMEBREW_PREFIX+d}
+ paths=%w[bin].collect {|d| HOMEBREW_PREFIX+d}
+
+ paths.each do |path|
+ path.find do |path|
+ next unless path.symlink? && path.resolved_path_exists?
+ brew_links << Pathname.new(path.realpath)
+ end
+ end
+
+ brew_links = brew_links.collect{|p|p.relative_path_from(REAL_CELLAR).to_s}.reject{|p|p.starts_with?("../")}
+ brew_links.each do |p|
+ parts = p.split("/")
+ next if parts.count < 2 # Shouldn't happen
+ brew = parts.shift
+ version = parts.shift
+
+ versions = version_map[brew] || []
+ versions << version unless versions.include? version
+ version_map[brew] = versions
+ end
+
+ return version_map
+end
+
+brews = audit
+brews.keys.sort.each do |b|
+ puts "#{b}: #{brews[b].sort*' '}"
+end
+puts