
Note I removed some of the code that changed the URL to be that of the github.user. Because this doesn't make any sense really. We want people to reference the commit history for whatever fork of homebrew they have checked out. So this is now what it does.
108 lines
2.3 KiB
Ruby
108 lines
2.3 KiB
Ruby
require 'formula'
|
|
require 'tab'
|
|
require 'keg'
|
|
|
|
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]
|
|
info_formula Formula.factory(ARGV.shift)
|
|
else
|
|
ARGV.formulae.each{ |f| info_formula f }
|
|
end
|
|
end
|
|
|
|
def github_fork
|
|
if system "/usr/bin/which -s git"
|
|
if `git remote -v` =~ %r{origin\s+(https?://|git@)github.com[:/](.+)/homebrew}
|
|
$2
|
|
end
|
|
end
|
|
end
|
|
|
|
def github_info name
|
|
path = Formula.path(name).realpath
|
|
|
|
if path.to_s =~ %r{#{HOMEBREW_REPOSITORY}/Library/Taps/(\w+)-(\w+)/(.*)}
|
|
user = $1
|
|
repo = "homebrew-#$2"
|
|
path = $3
|
|
else
|
|
path.parent.cd do
|
|
user = github_fork
|
|
end
|
|
repo = "homebrew"
|
|
path = "Library/Formula/#{path.basename}"
|
|
end
|
|
|
|
"https://github.com/#{user}/#{repo}/commits/master/#{path}"
|
|
end
|
|
|
|
def info_formula f
|
|
exec 'open', github_info(f.name) if ARGV.flag? '--github'
|
|
|
|
puts "#{f.name} #{f.version}"
|
|
puts f.homepage
|
|
|
|
if f.keg_only?
|
|
puts
|
|
puts "This formula is keg-only."
|
|
puts f.keg_only?
|
|
puts
|
|
end
|
|
|
|
puts "Depends on: #{f.deps*', '}" unless f.deps.empty?
|
|
|
|
if f.rack.directory?
|
|
kegs = f.rack.children
|
|
kegs.each do |keg|
|
|
next if keg.basename.to_s == '.DS_Store'
|
|
print "#{keg} (#{keg.abv})"
|
|
print " *" if Keg.new(keg).linked? and kegs.length > 1
|
|
puts
|
|
tab = Tab.for_keg keg
|
|
unless tab.used_options.empty?
|
|
puts " Installed with: #{tab.used_options*', '}"
|
|
end
|
|
end
|
|
else
|
|
puts "Not installed"
|
|
end
|
|
|
|
history = github_info f.name
|
|
puts history if history
|
|
|
|
the_caveats = (f.caveats || "").strip
|
|
unless the_caveats.empty?
|
|
puts
|
|
ohai "Caveats"
|
|
puts f.caveats
|
|
end
|
|
|
|
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
|