Module: OssAudit::Managers::Bundler

Extended by:
Utils
Defined in:
lib/oss_audit/managers/bundler.rb

Class Method Summary collapse

Methods included from Utils

get_uri

Class Method Details

.get_info(package, version = nil) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/oss_audit/managers/bundler.rb', line 18

def self.get_info(package, version=nil)
  data = get_uri("https://rubygems.org/api/v1/gems/#{package}.json")
  
  if data.is_a?(Exception)
    OssAudit.logger.error{"#{package} | #{data}"}
    return
  end

  name          = data['name']
  licenses      = Array(data['license'] || data['licenses'])
  homepage      = data['homepage_uri'] || data.dig('metadata','homepage_uri') || data['project_uri']
  source        = data['source_code_uri'] || data.dig('metadata','source_code_uri')

  dependencies  = data['dependencies']['runtime'].map{|k| k['name']}

  return {
    "name"          => name,
    "licenses"      => licenses,
    "homepage"      => homepage,
    "source"        => source,
    "dependencies"  => dependencies
  }
end

.list_dependencies(directory) ⇒ Object



10
11
12
13
14
15
16
# File 'lib/oss_audit/managers/bundler.rb', line 10

def self.list_dependencies(directory)
  file = File.read(File.join(directory, 'Gemfile'))

  file.gsub!(/\#.*/,'')

  return file.scan(/gem\s["'](\w+)["']/).flatten.uniq
end

.used_in?(directory) ⇒ Boolean

Returns:

  • (Boolean)


6
7
8
# File 'lib/oss_audit/managers/bundler.rb', line 6

def self.used_in?(directory)
  File.exists?(File.join(directory, 'Gemfile.lock')) || File.exists?(File.join(directory, 'Gemfile'))
end