Class: Licensed::Source::NPM

Inherits:
Object
  • Object
show all
Defined in:
lib/licensed/source/npm.rb

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ NPM

Returns a new instance of NPM.



6
7
8
# File 'lib/licensed/source/npm.rb', line 6

def initialize(config)
  @config = config
end

Instance Method Details

#dependenciesObject



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/licensed/source/npm.rb', line 18

def dependencies
  return @dependencies if defined?(@dependencies)

  locations = {}
  package_location_command.lines.each do |line|
    path, id = line.split(":")[0, 2]
    locations[id] ||= path
  end

  packages = recursive_dependencies(JSON.parse()["dependencies"])

  @dependencies = packages.map do |name, package|
    path = package["realPath"] || locations["#{package["name"]}@#{package["version"]}"]
    fail "couldn't locate #{name} under node_modules/" unless path
    Dependency.new(path, {
      "type"     => type,
      "name"     => package["name"],
      "version"  => package["version"],
      "summary"  => package["description"],
      "homepage" => package["homepage"]
    })
  end
end

#enabled?Boolean

Returns:

  • (Boolean)


14
15
16
# File 'lib/licensed/source/npm.rb', line 14

def enabled?
  @config.enabled?(type) && File.exist?(@config.pwd.join("package.json"))
end

#package_location_commandObject



42
43
44
# File 'lib/licensed/source/npm.rb', line 42

def package_location_command
  `npm list --parseable --production --long 2>/dev/null`
end

#package_metadata_commandObject



46
47
48
# File 'lib/licensed/source/npm.rb', line 46

def 
  `npm list --json --production --long 2>/dev/null`
end

#recursive_dependencies(dependencies, result = {}) ⇒ Object



50
51
52
53
54
55
56
# File 'lib/licensed/source/npm.rb', line 50

def recursive_dependencies(dependencies, result = {})
  dependencies.each do |name, dependency|
    (result[name] ||= {}).update(dependency)
    recursive_dependencies(dependency["dependencies"] || {}, result)
  end
  result
end

#typeObject



10
11
12
# File 'lib/licensed/source/npm.rb', line 10

def type
  "npm"
end