class RubyGemsOrg

Constants

GEM_NOT_FOUND
HOST
LANGUAGE
URI

Public Class Methods

new(package) click to toggle source
Calls superclass method Website::new
# File lib/license_auto/website/ruby_gems_org.rb, line 16
def initialize(package)
  super(package)
end

Public Instance Methods

download_gem() click to toggle source
# File lib/license_auto/website/ruby_gems_org.rb, line 201
def download_gem()
end
get_gem_info() click to toggle source

@return eg. Hashie::Mash (19 elements)

{
    "name":"diff-lcs",
    "downloads":42036753,
    "version":"1.2.5",
    "version_downloads":25578122,
    "platform":"ruby",
    "authors":"Austin Ziegler",
    "info":"Diff::LCS computes the difference between two Enumerable sequences using the\nMcIlroy-Hunt longest common subsequence (LCS) algorithm. It includes utilities\nto create a simple HTML diff output format and a standard diff-like tool.\n\nThis is release 1.2.4, fixing a bug introduced after diff-lcs 1.1.3 that did\nnot properly prune common sequences at the beginning of a comparison set.\nThanks to Paul Kunysch for fixing this issue.\n\nCoincident with the release of diff-lcs 1.2.3, we reported an issue with\nRubinius in 1.9 mode\n({rubinius/rubinius#2268}[https://github.com/rubinius/rubinius/issues/2268]).\nWe are happy to report that this issue has been resolved.",
    "licenses":[
        "MIT",
        "Perl Artistic v2",
        "GNU GPL v2"
    ],
    "metadata":{

    },
    "sha":"a1d3dde665292317a883d319066792e3f0e6a24cade4bc4cc47605d27664c9ed",
    "project_uri":"https://rubygems.org/gems/diff-lcs",
    "gem_uri":"https://rubygems.org/gems/diff-lcs-1.2.5.gem",
    "homepage_uri":"http://diff-lcs.rubyforge.org/",
    "wiki_uri":null,
    "documentation_uri":"http://www.rubydoc.info/gems/diff-lcs/1.2.5",
    "mailing_list_uri":null,
    "source_code_uri":null,
    "bug_tracker_uri":null,
    "dependencies":{
        "development":[
            {
                "name":"hoe",
                "requirements":"~> 3.7"
            },
            {
                "name":"hoe-bundler",
                "requirements":"~> 1.2"
            },
            {
                "name":"hoe-doofus",
                "requirements":"~> 1.0"
            },
            {
                "name":"hoe-gemspec2",
                "requirements":"~> 1.1"
            },
            {
                "name":"hoe-git",
                "requirements":"~> 1.5"
            },
            {
                "name":"hoe-rubygems",
                "requirements":"~> 1.0"
            },
            {
                "name":"hoe-travis",
                "requirements":"~> 1.2"
            },
            {
                "name":"rake",
                "requirements":"~> 10.0"
            },
            {
                "name":"rdoc",
                "requirements":"~> 4.0"
            },
            {
                "name":"rspec",
                "requirements":"~> 2.0"
            },
            {
                "name":"rubyforge",
                "requirements":">= 2.0.4"
            }
        ],
        "runtime":[

        ]
    }
}
# File lib/license_auto/website/ruby_gems_org.rb, line 162
def get_gem_info()
  # TODO: Gems.info(@package.name, @package.version)
  gem_info = Gems.info(@package.name)
  gem_info =
      if gem_info == GEM_NOT_FOUND
        nil
      else
        Hashie::Mash.new(gem_info)
      end
end
get_latest_version() click to toggle source

TODO: switch to github.com/rubygems/gems/issues/32#issuecomment-195180422 @return {

"authors" => "David Heinemeier Hansson",
"built_at" => "2016-03-07T00:00:00.000Z",
"created_at" => "2016-03-07T22:33:22.563Z",
"description" => "Ruby on Rails is a full-stack web framework optimized for programmer happiness and sustainable productivity. It encourages beautiful code by favoring convention over configuration.",
"downloads_count" => 28113,
"metadata" => {},
"number" => "4.2.6",
"summary" => "Full-stack web application framework.",
"platform" => "ruby",
"ruby_version" => ">= 1.9.3",
"prerelease" => false,
"licenses" => [
    [0] "MIT"
],
"requirements" => [],
"sha" => "a199258c0d2bae09993a6932c49df254fd66428899d1823b8c5285de02e5bc33"

}

# File lib/license_auto/website/ruby_gems_org.rb, line 192
def get_latest_version()
  versions = Gems.versions(@package.name).reject { |v| v['prerelease'] }.first
  if versions == GEM_NOT_FOUND
    raise(GEM_NOT_FOUND)
  end

  versions.reject { |v| v['prerelease'] }.first
end
get_license_info() click to toggle source

(Defaults to the latest version if no version is specified.)

# File lib/license_auto/website/ruby_gems_org.rb, line 22
def get_license_info()
  if @package.version.nil?
    begin
      @package.version = get_latest_version['number']
    rescue Exception => e
      LicenseAuto.logger.error(e)
      return nil
    end
  end

  gem_info = get_gem_info

  raise LicenseAuto::PackageNotFound if gem_info.nil?

  license_info = LicenseAuto::LicenseInfoWrapper.new

  source_code_matcher = LicenseAuto::Matcher::SourceURL.new(gem_info.source_code_uri || gem_info.homepage_uri)
  github_matched = source_code_matcher.match_github_resource
  bitbucket_matched = source_code_matcher.match_bitbucket_resource

  if github_matched
    license_info = GithubCom.new(@package, github_matched[:owner], github_matched[:repo]).get_license_info
  elsif bitbucket_matched
    # TODO bitbucket_matched
  elsif gem_info.homepage_uri
    # TODO: HomepageSpider
    # LicenseAuto.logger.warn("TODO: HomepageSpider")
    # homepage_spider = HomepageSpider.new(gem_info.homepage_uri, @package.name)
    # source_code_uri = homepage_spider.get_source_code_uri
    # if source_code_uri
    #   LicenseAuto.logger.warn("TODO: call myself recursively")
    # else
    #   license_wrapper = homepage_spider.get_license_page
    #   LicenseAuto.logger.warn("TODO: HomepageSpider")
    # end

  elsif not gem_info.licenses.empty?
    license_files = gem_info.licenses.map {|license_name|
      LicenseAuto::LicenseWrapper.new(
          name: license_name,
          sim_ratio: 1.0,
          html_url: gem_info.project_uri,
          download_url: gem_info.project_uri,
          text: nil
      )
    }

    license_info[:licenses] = license_files
    LicenseAuto.logger.debug(license_info)
  end

  # TODO:
  pack_wrapper = LicenseAuto::PackWrapper.new(
      project_url: gem_info.project_uri,
      homepage: gem_info.homepage_uri,
      source_url: gem_info.source_code_uri || source_code_matcher.url
  )

  license_info[:pack] = pack_wrapper
  license_info
end