add Formula.core_names Formula.tap_names and Formula.full_names

This commit is contained in:
Xu Cheng 2015-05-08 19:54:29 +08:00
parent 811c4c5add
commit e2b0bca931
3 changed files with 27 additions and 5 deletions

View File

@ -32,7 +32,7 @@ module Homebrew
formulae = [] formulae = []
if ARGV.named.empty? if ARGV.named.empty?
formulae = Formula.names formulae = Formula.full_names
else else
user, repo = tap_args user, repo = tap_args
user.downcase! user.downcase!

View File

@ -28,7 +28,7 @@ module Homebrew
end end
end end
elsif ARGV.empty? elsif ARGV.empty?
puts_columns Formula.names puts_columns Formula.full_names
elsif ARGV.first =~ HOMEBREW_TAP_FORMULA_REGEX elsif ARGV.first =~ HOMEBREW_TAP_FORMULA_REGEX
query = ARGV.first query = ARGV.first
user, repo, name = query.split("/", 3) user, repo, name = query.split("/", 3)
@ -152,7 +152,7 @@ module Homebrew
def search_formulae rx def search_formulae rx
aliases = Formula.aliases aliases = Formula.aliases
results = (Formula.names+aliases).grep(rx).sort results = (Formula.full_names+aliases).grep(rx).sort
# Filter out aliases when the full name was also found # Filter out aliases when the full name was also found
results.reject do |name| results.reject do |name|

View File

@ -603,13 +603,35 @@ class Formula
alias_method :python2, :python alias_method :python2, :python
alias_method :python3, :python alias_method :python3, :python
# an array of all core {Formula} names
def self.core_names
Dir["#{HOMEBREW_LIBRARY}/Formula/*.rb"].map{ |f| File.basename f, ".rb" }.sort
end
# an array of all tap {Formula} names
def self.tap_names
names = []
Pathname.glob("#{HOMEBREW_LIBRARY}/Taps/*/*/") do |tap|
tap.find_formula do |formula|
formula.to_s =~ HOMEBREW_TAP_PATH_REGEX
names << "#{$1}/#{$2.gsub(/^homebrew-/, "")}/#{formula.basename(".rb")}"
end
end
names.sort
end
# an array of all {Formula} names # an array of all {Formula} names
def self.names def self.names
Dir["#{HOMEBREW_LIBRARY}/Formula/*.rb"].map{ |f| File.basename f, '.rb' }.sort (core_names + tap_names.map { |name| name.split("/")[-1] }).sort.uniq
end
# an array of all {Formula} names, which the tap formulae have the fully-qualified name
def self.full_names
core_names + tap_names
end end
def self.each def self.each
names.each do |name| full_names.each do |name|
begin begin
yield Formulary.factory(name) yield Formulary.factory(name)
rescue StandardError => e rescue StandardError => e