Sha256: fc399a72bc74391f772737bdd288719b8071deea6766491e479e379ae373b213

Contents?: true

Size: 972 Bytes

Versions: 9

Compression:

Stored size: 972 Bytes

Contents

require 'open-uri'
require 'upm/colored'

class FreshportsSearch
  NUM_RESULTS = 20
  SEARCH_URL  = "https://www.freshports.org/search.php?query=%s&num=#{NUM_RESULTS}&stype=name&method=match&deleted=excludedeleted&start=1&casesensitivity=caseinsensitive"
  SVN_URL     = "svn://svn.FreeBSD.org/ports/head/%s/%s"

  def print(results)
    results.each do |path, desc, version|
      _, category, package = path.split("/")
      puts "<9>#{category}<8>/<11>#{package} <8>(<7>#{version}<8>)".colorize
      puts "  #{desc}"
      puts "  #{SVN_URL % [category, package]}".light_green
    end
  end

  def search!(query)
    puts "<8>* <7>Searching for <15>#{query}<7>...".colorize
    html = open(SEARCH_URL % query, &:read)
    puts
    results = html.scan(%r{<DT>\s*<BIG><B><a href="([^"]+)/">.+?</BIG>\s*<span class="[^"]+">([^<]+)</span><br>\s*<b>\s*([^<]+)\s*</b>}im)
    print(results)
  end
end

if __FILE__ == $0
  FreshportsSearch.new.search!("silver_searcher")
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
upm-0.1.18 lib/upm/freshports_search.rb
upm-0.1.17 lib/upm/freshports_search.rb
upm-0.1.16 lib/upm/freshports_search.rb
upm-0.1.15 lib/upm/freshports_search.rb
upm-0.1.14 lib/upm/freshports_search.rb
upm-0.1.13 lib/upm/freshports_search.rb
upm-0.1.12 lib/upm/freshports_search.rb
upm-0.1.11 lib/upm/freshports_search.rb
upm-0.1.10 lib/upm/freshports_search.rb