Sha256: 086cf1363846acb375fc9714a97409411b24e669b6baf3af33c5a793925f4997

Contents?: true

Size: 1.02 KB

Versions: 7

Compression:

Stored size: 1.02 KB

Contents

require 'octokit'

module Gemdiff
  module RepoFinder
    GITHUB_REPO_REGEX = /(https?):\/\/(www.)?github\.com\/([\w._%-]*)\/([\w._%-]*)/

    class << self
      # Try to get the homepage from the gemspec
      # If not found, search github
      def github_url(gem_name)
        homepage = gemspec_homepage(gem_name)
        return homepage if homepage
        search gem_name
      end

    private

      def gemspec_homepage(gem_name)
        homepage = find_homepage_in_spec(gem_name)
        match = homepage.match(GITHUB_REPO_REGEX)
        match && match[0]
      end

      def search(gem_name)
        query = "#{gem_name}&language:ruby&in:name"
        result = octokit_client.search_repositories(query)
        return nil if result.items.empty?
        result.items
        "http://github.com/#{result.items.first.full_name}"
      end
      
      def octokit_client
        Octokit::Client.new
      end

      def find_homepage_in_spec(gem_name)
        `gem spec #{gem_name} | grep //github.com/`
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
gemdiff-0.4.0 lib/gemdiff/repo_finder.rb
gemdiff-0.3.1 lib/gemdiff/repo_finder.rb
gemdiff-0.3.0 lib/gemdiff/repo_finder.rb
gemdiff-0.2.1 lib/gemdiff/repo_finder.rb
gemdiff-0.1.0 lib/gemdiff/repo_finder.rb
gemdiff-0.0.2 lib/gemdiff/repo_finder.rb
gemdiff-0.0.1 lib/gemdiff/repo_finder.rb