aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/cmd/info.rb
diff options
context:
space:
mode:
Diffstat (limited to 'Library/Homebrew/cmd/info.rb')
-rw-r--r--Library/Homebrew/cmd/info.rb92
1 files changed, 92 insertions, 0 deletions
diff --git a/Library/Homebrew/cmd/info.rb b/Library/Homebrew/cmd/info.rb
new file mode 100644
index 000000000..7f9767e07
--- /dev/null
+++ b/Library/Homebrew/cmd/info.rb
@@ -0,0 +1,92 @@
+require 'formula'
+
+module Homebrew extend self
+ def info
+ if ARGV.named.empty?
+ if ARGV.include? "--all"
+ Formula.each do |f|
+ info_formula f
+ puts '---'
+ end
+ else
+ puts "#{HOMEBREW_CELLAR.children.length} kegs, #{HOMEBREW_CELLAR.abv}"
+ end
+ elsif valid_url ARGV[0]
+ path = Pathname.new(ARGV.shift)
+ /(.*?)[-_.]?#{path.version}/.match path.basename
+ unless $1.to_s.empty?
+ name = $1
+ else
+ name = path.stem
+ end
+ puts "#{name} #{path.version}"
+ else
+ ARGV.formulae.each{ |f| info_formula f }
+ end
+ end
+
+ def github_info name
+ formula_name = Formula.path(name).basename
+ user = 'mxcl'
+ branch = 'master'
+
+ if system "/usr/bin/which -s git"
+ gh_user=`git config --global github.user 2>/dev/null`.chomp
+ /^\*\s*(.*)/.match(`git --work-tree=#{HOMEBREW_REPOSITORY} branch 2>/dev/null`)
+ unless $1.nil? || $1.empty? || gh_user.empty?
+ branch = $1.chomp
+ user = gh_user
+ end
+ end
+
+ "http://github.com/#{user}/homebrew/commits/#{branch}/Library/Formula/#{formula_name}"
+ end
+
+ def info_formula f
+ exec 'open', github_info(f.name) if ARGV.flag? '--github'
+
+ puts "#{f.name} #{f.version}"
+ puts f.homepage
+
+ puts "Depends on: #{f.deps*', '}" unless f.deps.empty?
+
+ rack = f.prefix.parent
+ if rack.directory?
+ kegs = rack.children
+ kegs.each do |keg|
+ next if keg.basename.to_s == '.DS_Store'
+ print "#{keg} (#{keg.abv})"
+ print " *" if f.installed_prefix == keg and kegs.length > 1
+ puts
+ end
+ else
+ puts "Not installed"
+ end
+
+ if f.caveats
+ puts
+ puts f.caveats
+ puts
+ end
+
+ history = github_info f.name
+ puts history if history
+
+ rescue FormulaUnavailableError
+ # check for DIY installation
+ d = HOMEBREW_PREFIX/name
+ if d.directory?
+ ohai "DIY Installation"
+ d.children.each{ |keg| puts "#{keg} (#{keg.abv})" }
+ else
+ raise "No such formula or keg"
+ end
+ end
+
+ private
+
+ def valid_url u
+ u[0..6] == 'http://' or u[0..7] == 'https://' or u[0..5] == 'ftp://'
+ end
+
+end