Class: Papers::ManifestCommand

Inherits:
Object
  • Object
show all
Defined in:
lib/papers/manifest_command.rb

Direct Known Subclasses

ManifestGenerator, ManifestUpdater

Instance Method Summary collapse

Constructor Details

#initialize(manifest_path = nil) ⇒ ManifestCommand

Returns a new instance of ManifestCommand.



3
4
5
# File 'lib/papers/manifest_command.rb', line 3

def initialize(manifest_path = nil)
  @manifest_path = manifest_path || File.join('config', 'papers_manifest.yml')
end

Instance Method Details

#blank?(str) ⇒ Boolean

Returns:

  • (Boolean)


84
85
86
# File 'lib/papers/manifest_command.rb', line 84

def blank?(str)
  str.to_s.empty?
end

#build_headerObject



11
12
13
14
15
16
17
18
# File 'lib/papers/manifest_command.rb', line 11

def build_header
  [
    "# Dependency Manifest for the Papers gem",
    "# Used to test your gems and javascript against license whitelist",
    "#",
    "# http://github.com/newrelic/papers\n"
  ].join("\n")
end

#ensure_valid_url(url_string) ⇒ Object



88
89
90
91
92
93
94
95
# File 'lib/papers/manifest_command.rb', line 88

def ensure_valid_url(url_string)
  match_url = URI::regexp.match(url_string)
  if match_url.nil?
    nil
  else
    match_url[0]
  end
end

#gem_entry(spec) ⇒ Object



72
73
74
75
76
77
78
79
80
81
82
# File 'lib/papers/manifest_command.rb', line 72

def gem_entry(spec)
  gem_license     = blank?(spec.license) ? 'Unknown' : spec.license
  gem_project_url = blank?(spec.homepage) ? nil : spec.homepage

  {
    'license'     => gem_license,
    'license_url' => nil,
    'project_url' => ensure_valid_url(gem_project_url)
    # TODO: add support for multiple licenses? some gemspecs have dual licensing
  }
end

#gem_name_and_version(spec) ⇒ Object



64
65
66
67
68
69
70
# File 'lib/papers/manifest_command.rb', line 64

def gem_name_and_version(spec)
  if spec.name == 'bundler'
    name_and_version = spec.name
  else
    name_and_version = "#{spec.name}-#{spec.version}"
  end
end

#get_installed_bower_componentsObject



40
41
42
43
44
45
46
47
48
49
50
# File 'lib/papers/manifest_command.rb', line 40

def get_installed_bower_components
  components = {}
  BowerComponent.full_introspected_entries.each do |entry|
    components[entry['name']] = {
      'license' => 'Unknown',
      'license_url' => nil,
      'project_url' => ensure_valid_url(entry['homepage'])
    }
  end
  components.empty? ? nil : components
end

#get_installed_gemsObject



20
21
22
23
24
25
26
# File 'lib/papers/manifest_command.rb', line 20

def get_installed_gems
  gems = {}
  Bundler.load.specs.each do |spec|
    gems[gem_name_and_version(spec)] = gem_entry(spec)
  end
  return gems
end

#get_installed_javascriptsObject



28
29
30
31
32
33
34
35
36
37
38
# File 'lib/papers/manifest_command.rb', line 28

def get_installed_javascripts
  js = {}
  Javascript.introspected.each do |entry|
    js[entry] = {
      'license'     => 'Unknown',
      'license_url' => nil,
      'project_url' => nil
    }
  end
  js.empty? ? nil : js
end

#get_installed_npm_packagesObject



52
53
54
55
56
57
58
59
60
61
62
# File 'lib/papers/manifest_command.rb', line 52

def get_installed_npm_packages
  packages = {}
  NpmPackage.full_introspected_entries.each do |entry|
    packages[entry['name']] = {
      'license' => 'Unknown',
      'license_url' => nil,
      'project_url' => nil
    }
  end
  packages.empty? ? nil : packages
end

#manifest_exists?Boolean

Returns:

  • (Boolean)


7
8
9
# File 'lib/papers/manifest_command.rb', line 7

def manifest_exists?
  File.exist?(@manifest_path)
end