Module: OssAudit::Managers::Yarn

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

Class Method Summary collapse

Methods included from Utils

get_uri

Class Method Details

.get_info(package, version = nil) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/oss_audit/managers/yarn.rb', line 21

def self.get_info(package, version=nil)
  data = get_uri("https://registry.yarnpkg.com/#{package}/#{version||'latest'}")
  
  unless data.is_a?(Hash)
    OssAudit.logger.error{"#{package} | #{data}"}
    return
  end

  name          = data['name']
  licenses      = Array(data['license'])
  homepage      = data['homepage']
  source        = data.dig('repository','url')

  dependencies  = (data['dependencies']||{}).keys


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

.list_dependencies(directory) ⇒ Object



14
15
16
17
18
19
# File 'lib/oss_audit/managers/yarn.rb', line 14

def self.list_dependencies(directory)
  packages_files(directory).map do |file|
    data = JSON.parse(File.read(file))
    ((data['dependencies']||{}).keys | (data['devDependencies']||{}).keys)
  end.flatten
end

.packages_files(directory) ⇒ Object



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

def self.packages_files(directory)
  Dir.glob(File.join(directory, '**/package.json')).reject{|x| x.include?('node_modules')}
end

.used_in?(directory) ⇒ Boolean

Returns:

  • (Boolean)


10
11
12
# File 'lib/oss_audit/managers/yarn.rb', line 10

def self.used_in?(directory)
  packages_files(directory).any?
end