forked from Homebrew/legacy-homebrew
-
Notifications
You must be signed in to change notification settings - Fork 1
/
info.rb
107 lines (91 loc) · 2.32 KB
/
info.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
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?
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