aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/cmd/search.rb26
-rw-r--r--Library/Homebrew/utils.rb24
2 files changed, 40 insertions, 10 deletions
diff --git a/Library/Homebrew/cmd/search.rb b/Library/Homebrew/cmd/search.rb
index b4611c0cd..66ce5d379 100644
--- a/Library/Homebrew/cmd/search.rb
+++ b/Library/Homebrew/cmd/search.rb
@@ -9,7 +9,13 @@ module Homebrew extend self
exec "open", "http://pdb.finkproject.org/pdb/browse.php?summary=#{ARGV.next}"
else
query = ARGV.first
- search_results = search_brews query
+ rx = if query =~ %r{^/(.*)/$}
+ Regexp.new($1)
+ else
+ /.*#{Regexp.escape query}.*/i
+ end
+
+ search_results = search_brews rx
puts_columns search_results
if not query.to_s.empty? and $stdout.tty? and msg = blacklisted?(query)
@@ -20,19 +26,20 @@ module Homebrew extend self
end
puts msg
end
+
+ if search_results.empty? and not blacklisted? query
+ pulls = GitHub.find_pull_requests rx
+ unless pulls.empty?
+ puts "Open pull requests matching \"#{query}\":", *pulls.map { |p| " #{p}" }
+ end
+ end
end
end
- def search_brews text
- if text.to_s.empty?
+ def search_brews rx
+ if rx.to_s.empty?
Formula.names
else
- rx = if text =~ %r{^/(.*)/$}
- Regexp.new($1)
- else
- /.*#{Regexp.escape text}.*/i
- end
-
aliases = Formula.aliases
results = (Formula.names+aliases).grep rx
@@ -45,5 +52,4 @@ module Homebrew extend self
end
end
end
-
end
diff --git a/Library/Homebrew/utils.rb b/Library/Homebrew/utils.rb
index 97fa46f7b..71417e61a 100644
--- a/Library/Homebrew/utils.rb
+++ b/Library/Homebrew/utils.rb
@@ -427,4 +427,28 @@ module GitHub extend self
rescue
[]
end
+
+ def find_pull_requests rx
+ require 'open-uri'
+ require 'vendor/multi_json'
+
+ pulls = []
+ uri = URI.parse("https://api.github.com/repos/mxcl/homebrew/pulls")
+ uri.query = "per_page=100"
+
+ open uri do |f|
+ MultiJson.decode((f.read)).each do |pull|
+ pulls << pull['html_url'] if rx.match pull['title']
+ end
+
+ uri = if f.meta['link'] =~ /rel="next"/
+ f.meta['link'].slice(URI.regexp)
+ else
+ nil
+ end
+ end while uri
+ pulls
+ rescue
+ []
+ end
end