diff --git a/Library/Homebrew/cmd/readall.rb b/Library/Homebrew/cmd/readall.rb index ce5be80a8b..399618dd80 100644 --- a/Library/Homebrew/cmd/readall.rb +++ b/Library/Homebrew/cmd/readall.rb @@ -32,7 +32,7 @@ module Homebrew formulae = [] if ARGV.named.empty? - formulae = Formula.names + formulae = Formula.full_names else user, repo = tap_args user.downcase! diff --git a/Library/Homebrew/cmd/search.rb b/Library/Homebrew/cmd/search.rb index 5ac9db3919..4367262745 100644 --- a/Library/Homebrew/cmd/search.rb +++ b/Library/Homebrew/cmd/search.rb @@ -28,7 +28,7 @@ module Homebrew end end elsif ARGV.empty? - puts_columns Formula.names + puts_columns Formula.full_names elsif ARGV.first =~ HOMEBREW_TAP_FORMULA_REGEX query = ARGV.first user, repo, name = query.split("/", 3) @@ -152,7 +152,7 @@ module Homebrew def search_formulae rx 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 results.reject do |name| diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 822f17509f..60c9fa65ac 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -603,13 +603,35 @@ class Formula alias_method :python2, :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 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 def self.each - names.each do |name| + full_names.each do |name| begin yield Formulary.factory(name) rescue StandardError => e