mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
93 lines
2.1 KiB
Ruby
93 lines
2.1 KiB
Ruby
![]() |
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
|