license_finder 2.1.0.rc1 → 2.1.0.rc2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: eb78a2e040163c6df7ba630164564c8ec297c339
4
- data.tar.gz: 3e4cbd76361f6e51dc2295b45fd39a167d87ef5e
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ODI1N2UxNjA0NjVkOWE0MDQ3YTkzY2ZmMDBiNzcwMmNhYzllZDk3NQ==
5
+ data.tar.gz: !binary |-
6
+ M2ViZWI5ZGNhOWJhMDkxMTU2YTcyOWIyZDgwYTk3MzA1NzQ0NTJlYw==
5
7
  SHA512:
6
- metadata.gz: cfb282d10162683776abc72912cbf5a14c782037427e89ebe41965257c4e5bd54a336391b3d1dc401db9db8b9a9050951ee1b5313c5bb329879ba321ded91add
7
- data.tar.gz: c246e54f60cfe30cc2c043b5a744e2980a7329dae589a845ca63f2d20d5be4e29b184cbaf5306cf7cf076975be158b2039c84abe673b1b9356883c6dbc6a4cf7
8
+ metadata.gz: !binary |-
9
+ ODFiNjY1NjdiYzA0MDA3MGMyZTc0NmExNTNjYjNlNDMxMTUwOWQxZTIxM2Mx
10
+ MWY0MmMzNzBkM2E3NjJhMjcxMjQwOGI3MDQ1OWI1MDFjZWFiZDM1MDUwMTYx
11
+ ZTRhMTNkNmM4ZDAxNDkzNGRlZjgyZWIyZWNiOTQ5MDYzMjg4MDE=
12
+ data.tar.gz: !binary |-
13
+ Nzg0M2E4OGM1NDUyMTJlODllNDgyNDQ3YjgzMmI3NzY1NzRmZGVlNDQ1MzYw
14
+ ODRiMDA2NmUzNzRkODVkNTU2Y2IxMWIwOTIxYzNmYjRhYmZhOWFhNTNiMzJk
15
+ OTk0ZTc5MmVkMTk0MzI1YWQ2YzYxOGI0OGUxNTNiMzZhMWY4OTI=
data/.travis.yml CHANGED
@@ -1,15 +1,16 @@
1
1
  rvm:
2
- - 2.1.0
3
- - 2.0.0
4
2
  - 1.9.3
3
+ - 2.0
4
+ - 2.1
5
+ - 2.2
6
+ - 2.3
5
7
  - jruby-19mode
6
- - ruby-head
7
- - jruby-head
8
+ - jruby-1.7.23
9
+ - jruby-9.0.4.0
8
10
 
9
11
  matrix:
10
12
  allow_failures:
11
- - rvm: ruby-head
12
- - rvm: jruby-head
13
+ - rvm: 1.9.3
13
14
 
14
15
  env:
15
16
  - PATH=$PATH:$HOME/gradle/bin:$HOME/rebar:$HOME/go/bin GOPATH=$HOME/go
data/CHANGELOG.rdoc CHANGED
@@ -1,3 +1,10 @@
1
+ === 2.1.0.rc2 / 2015-12-31
2
+
3
+ * Features
4
+ * specific versions of a dependency can be approved (#183, #185). (Thanks, @ipsi!)
5
+ * improved "go workspace" support by looking at git submodules. (Thanks, @jvshahid and @aminjam!)
6
+ * added an "install path" field to the report output. (Thanks, @jvshahid and @aminjam!)
7
+
1
8
  === 2.1.0.rc1 / 2015-11-03
2
9
 
3
10
  * Features
@@ -11,6 +18,7 @@
11
18
  * Experimental support for "composite" projects (multiple git submodules)
12
19
  * Experimental support for "license diffs" between directories
13
20
 
21
+
14
22
  === 2.0.4 / 2015-04-16
15
23
 
16
24
  * Features
@@ -1,10 +1,12 @@
1
1
  buildscript {
2
2
  repositories {
3
- mavenCentral()
3
+ maven {
4
+ url 'https://plugins.gradle.org/m2/'
5
+ }
4
6
  }
5
7
 
6
8
  dependencies {
7
- classpath 'nl.javadude.gradle.plugins:license-gradle-plugin:0.7.0'
9
+ classpath 'gradle.plugin.nl.javadude.gradle.plugins:license-gradle-plugin:0.12.1'
8
10
  }
9
11
  }
10
12
 
@@ -13,12 +13,14 @@ dependencies {
13
13
 
14
14
  buildscript {
15
15
  repositories {
16
- mavenCentral()
16
+ maven {
17
+ url 'https://plugins.gradle.org/m2/'
18
+ }
17
19
  }
18
20
 
19
21
  dependencies {
20
- classpath 'nl.javadude.gradle.plugins:license-gradle-plugin:0.7.0'
22
+ classpath 'gradle.plugin.nl.javadude.gradle.plugins:license-gradle-plugin:0.12.1'
21
23
  }
22
24
  }
23
25
 
24
- apply plugin: 'license'
26
+ apply plugin: 'license'
@@ -34,6 +34,9 @@ module LicenseFinder
34
34
  unapproved = license_finder.unapproved
35
35
  blacklisted = license_finder.blacklisted
36
36
 
37
+ # Ensure to start output on a new line even with dot progress indicators.
38
+ say "\n"
39
+
37
40
  if unapproved.empty?
38
41
  say "All dependencies are approved for use", :green
39
42
  else
@@ -9,6 +9,7 @@ module LicenseFinder
9
9
  def auditable
10
10
  method_option :who, desc: "The person making this decision"
11
11
  method_option :why, desc: "The reason for making this decision"
12
+ method_option :version, desc: 'The version that will be approved'
12
13
  end
13
14
  end
14
15
 
@@ -18,6 +19,7 @@ module LicenseFinder
18
19
  @txn ||= {
19
20
  who: options[:who],
20
21
  why: options[:why],
22
+ versions: options[:version] ? [options[:version]] : [],
21
23
  when: Time.now.getutc
22
24
  }
23
25
  end
@@ -42,8 +42,8 @@ module LicenseFinder
42
42
  def with_approval(package)
43
43
  if package.licenses.all? { |license| decisions.blacklisted?(license) }
44
44
  package.blacklisted!
45
- elsif decisions.approved?(package.name)
46
- package.approved_manually!(decisions.approval_of(package.name))
45
+ elsif decisions.approved?(package.name, package.version)
46
+ package.approved_manually!(decisions.approval_of(package.name, package.version))
47
47
  elsif package.licenses.any? { |license| decisions.whitelisted?(license) }
48
48
  package.whitelisted!
49
49
  end
@@ -10,12 +10,24 @@ module LicenseFinder
10
10
  @licenses[name]
11
11
  end
12
12
 
13
- def approval_of(name)
14
- @approvals[name]
13
+ def approval_of(name, version=nil)
14
+ if !@approvals.has_key?(name)
15
+ nil
16
+ elsif version != nil
17
+ @approvals[name] if @approvals[name][:safe_versions].empty? || @approvals[name][:safe_versions].include?(version)
18
+ else
19
+ @approvals[name] if @approvals[name][:safe_versions].empty?
20
+ end
15
21
  end
16
22
 
17
- def approved?(name)
18
- @approvals.has_key?(name)
23
+ def approved?(name, version=nil)
24
+ if !@approvals.has_key?(name)
25
+ nil
26
+ elsif version != nil
27
+ @approvals.has_key?(name) && @approvals[name][:safe_versions].empty? || @approvals[name][:safe_versions].include?(version)
28
+ else
29
+ @approvals.has_key?(name)
30
+ end
19
31
  end
20
32
 
21
33
  def whitelisted?(lic)
@@ -38,9 +50,9 @@ module LicenseFinder
38
50
  # WRITE
39
51
  #######
40
52
 
41
- TXN = Struct.new(:who, :why, :safe_when) do
53
+ TXN = Struct.new(:who, :why, :safe_when, :safe_versions) do
42
54
  def self.from_hash(txn)
43
- new(txn[:who], txn[:why], txn[:when])
55
+ new(txn[:who], txn[:why], txn[:when], txn[:versions].nil? ? [] : txn[:versions])
44
56
  end
45
57
  end
46
58
 
@@ -81,7 +93,15 @@ module LicenseFinder
81
93
 
82
94
  def approve(name, txn = {})
83
95
  @decisions << [:approve, name, txn]
96
+
97
+ versions = []
98
+ if @approvals.has_key?(name)
99
+ versions = @approvals[name][:safe_versions]
100
+ end
101
+
84
102
  @approvals[name] = TXN.from_hash(txn)
103
+
104
+ @approvals[name][:safe_versions].concat(versions)
85
105
  self
86
106
  end
87
107
 
@@ -2,10 +2,12 @@ require 'json'
2
2
 
3
3
  module LicenseFinder
4
4
  class GoWorkspace < PackageManager
5
+ Submodule = Struct.new :path, :revision
6
+
5
7
  def current_packages
6
- package_paths.map do |package_path|
7
- package_name = Pathname(package_path).relative_path_from(project_src).to_s
8
- GoPackage.from_workspace(package_name, package_path)
8
+ submodules.map do |submodule|
9
+ import_path = Pathname.new(submodule.path).relative_path_from(project_src)
10
+ GoPackage.from_dependency({'ImportPath' => import_path.to_s, 'Rev' => submodule.revision}, project_src)
9
11
  end
10
12
  end
11
13
 
@@ -24,12 +26,16 @@ module LicenseFinder
24
26
  project_path.join('src')
25
27
  end
26
28
 
27
- def package_paths
28
- command = 'go list -f "{{.ImportPath}} " ./...'
29
- output, success = Dir.chdir(project_path) { capture(command) }
30
- raise "Command '#{command}' failed to execute: #{output}" unless success
31
-
32
- output.gsub(/\s{2,}/, ',').split(',').map { |path| path[1..-1] }
29
+ def submodules
30
+ output = Dir.chdir(project_path) do |d|
31
+ result = capture('git submodule status')
32
+ raise 'git submodule status failed' unless result[1]
33
+ result.first
34
+ end
35
+ output.lines.map do |gitmodule|
36
+ columns = gitmodule.split.map(&:strip)
37
+ Submodule.new File.join(project_path,columns[1]), columns[0]
38
+ end
33
39
  end
34
40
  end
35
41
  end
@@ -3,7 +3,7 @@ require 'csv'
3
3
  module LicenseFinder
4
4
  class CsvReport < Report
5
5
  COMMA_SEP = ","
6
- AVAILABLE_COLUMNS = %w[name version authors licenses approved summary description homepage]
6
+ AVAILABLE_COLUMNS = %w[name version authors licenses approved summary description homepage install_path]
7
7
  MISSING_DEPENDENCY_TEXT = "This package is not installed. Please install to determine licenses."
8
8
 
9
9
  def initialize(dependencies, options)
@@ -62,5 +62,9 @@ module LicenseFinder
62
62
  def format_description(dep)
63
63
  dep.description.to_s.strip
64
64
  end
65
+
66
+ def format_install_path(dep)
67
+ dep.install_path
68
+ end
65
69
  end
66
70
  end
@@ -1,3 +1,3 @@
1
1
  module LicenseFinder
2
- VERSION = "2.1.0.rc1"
2
+ VERSION = "2.1.0.rc2"
3
3
  end
@@ -50,7 +50,10 @@ Gem::Specification.new do |s|
50
50
  s.add_development_dependency "rspec", "~> 3"
51
51
  s.add_development_dependency "capybara", "~> 2.0.0"
52
52
  s.add_development_dependency "webmock", "~> 1.13"
53
- s.add_development_dependency "cocoapods" if LicenseFinder::Platform.darwin?
53
+ s.add_development_dependency "cocoapods", "0.34.0" if LicenseFinder::Platform.darwin?
54
+
55
+ # temporary to preserve ruby 1.9.3 support.
56
+ s.add_development_dependency "mime-types", "< 3.0"
54
57
 
55
58
  s.files = `git ls-files`.split("\n")
56
59
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -31,18 +31,20 @@ module LicenseFinder
31
31
  end
32
32
  end
33
33
 
34
- it "sets approver and approval message" do
34
+ it "sets approver, approval message, and approval version" do
35
35
  subject.options = {
36
36
  who: "Julian",
37
- why: "We really need this"
37
+ why: "We really need this",
38
+ version: '1.0.0.RELEASE'
38
39
  }
39
40
  silence_stdout do
40
41
  subject.add("foo")
41
42
  end
42
43
 
43
- approval = subject.decisions.approval_of("foo")
44
+ approval = subject.decisions.approval_of("foo", '1.0.0.RELEASE')
44
45
  expect(approval.who).to eq "Julian"
45
46
  expect(approval.why).to eq "We really need this"
47
+ expect(approval.safe_versions).to eq ['1.0.0.RELEASE']
46
48
  end
47
49
  end
48
50
 
@@ -39,6 +39,17 @@ module LicenseFinder
39
39
  expect(approval.who).to eq "Julian"
40
40
  expect(approval.why).to eq "We really need this"
41
41
  end
42
+
43
+ it 'has an --approve option to approve the added dependency & version combination' do
44
+ subject.options = { approve: true, who: "Julian", why: "We really need this", version: '1.0.0.RELEASE' }
45
+ silence_stdout do
46
+ subject.add("js_dep", "MIT")
47
+ end
48
+ approval = subject.decisions.approval_of("js_dep", '1.0.0.RELEASE')
49
+ expect(approval.who).to eq "Julian"
50
+ expect(approval.why).to eq "We really need this"
51
+ expect(approval.safe_versions).to eq ['1.0.0.RELEASE']
52
+ end
42
53
  end
43
54
 
44
55
  describe "remove" do
@@ -119,6 +119,52 @@ module LicenseFinder
119
119
  expect(dep).to be_approved
120
120
  expect(dep).to be_approved_manually
121
121
  end
122
+
123
+ it 'does not return an approval for a package without a version if all approvals have an explicit version' do
124
+ decisions = Decisions.new
125
+ .add_package('spring-boot', nil)
126
+ .approve('spring-boot', versions: ['1.3.0.RELEASE'], who: 'Approver', why: 'Because')
127
+ decision_applier = described_class.new(decisions: decisions, packages: [])
128
+ dep = decision_applier.acknowledged.last
129
+ expect(dep).to_not be_approved
130
+ end
131
+
132
+ it 'does not return an approval if the package has the wrong version' do
133
+ decisions = Decisions.new
134
+ .add_package('spring-boot', '1.3.1.RELEASE')
135
+ .approve('spring-boot', versions: ['1.3.0.RELEASE'], who: 'Approver', why: 'Because')
136
+ decision_applier = described_class.new(decisions: decisions, packages: [])
137
+ dep = decision_applier.acknowledged.last
138
+ expect(dep).to_not be_approved
139
+ end
140
+
141
+ it 'returns an approval if the requested package has an approved version' do
142
+ decisions = Decisions.new
143
+ .add_package('spring-boot', '1.3.0.RELEASE')
144
+ .approve('spring-boot', versions: ['1.3.0.RELEASE'], who: 'Approver', why: 'Because')
145
+ decision_applier = described_class.new(decisions: decisions, packages: [])
146
+ dep = decision_applier.acknowledged.last
147
+ expect(dep).to be_approved
148
+ expect(dep).to be_approved_manually
149
+ end
150
+
151
+ it 'returns an approval if the requested package has been approved, but no version was specified' do
152
+ decisions = Decisions.new
153
+ .add_package('spring-boot', '1.3.0.RELEASE')
154
+ .approve('spring-boot', versions: [], who: 'Approver', why: 'Because')
155
+ decision_applier = described_class.new(decisions: decisions, packages: [])
156
+ dep = decision_applier.acknowledged.last
157
+ expect(dep).to be_approved
158
+ expect(dep).to be_approved_manually
159
+ end
160
+
161
+ it 'does not return an approval if no dependencies have been approved' do
162
+ decisions = Decisions.new
163
+ .add_package('spring-boot', '1.3.0.RELEASE')
164
+ decision_applier = described_class.new(decisions: decisions, packages: [])
165
+ dep = decision_applier.acknowledged.last
166
+ expect(dep).to_not be_approved
167
+ end
122
168
  end
123
169
 
124
170
  describe '#unapproved' do
@@ -8,6 +8,7 @@ module LicenseFinder
8
8
  describe '#current_packages' do
9
9
  let(:content) {
10
10
  '_/Users/pivotal/workspace/loggregator/src/bitbucket.org/kardianos/osext
11
+ _/Users/pivotal/workspace/loggregator/src/bitbucket.org/kardianos/osext/something
11
12
  _/Users/pivotal/workspace/loggregator/src/deaagent
12
13
  _/Users/pivotal/workspace/loggregator/src/deaagent/deaagent
13
14
  _/Users/pivotal/workspace/loggregator/src/deaagent/domain
@@ -18,9 +19,14 @@ module LicenseFinder
18
19
  _/Users/pivotal/workspace/loggregator/src/doppler/groupedsinks/sink_wrapper'
19
20
  }
20
21
 
22
+ let(:git_modules) {
23
+ "b8a35001b773c267e src/bitbucket.org/kardianos/osext (heads/master)"
24
+ }
25
+
21
26
  before do
22
27
  allow(Dir).to receive(:chdir).with(Pathname('/Users/pivotal/workspace/loggregator')) { |&block| block.call }
23
28
  allow(subject).to receive(:capture).with('go list -f "{{.ImportPath}} " ./...').and_return([content.to_s, true])
29
+ allow(subject).to receive(:capture).with('git submodule status').and_return([git_modules, true])
24
30
  end
25
31
 
26
32
  describe 'should return an array of go packages' do
@@ -28,41 +34,57 @@ module LicenseFinder
28
34
  packages = subject.current_packages
29
35
  first_package = packages.first
30
36
  expect(first_package.name).to eq 'bitbucket.org/kardianos/osext'
31
- expect(first_package.version).to eq 'unknown'
37
+ expect(first_package.version).to eq 'b8a3500'
32
38
  expect(first_package.install_path).to eq '/Users/pivotal/workspace/loggregator/src/bitbucket.org/kardianos/osext'
33
39
  end
34
- end
35
- end
36
40
 
37
- describe '#package_path' do
38
- it 'returns the package_path' do
39
- expect(subject.package_path).to eq Pathname('/Users/pivotal/workspace/loggregator/.envrc')
40
- end
41
- end
41
+ it 'should filter the subpackages' do
42
+ packages = subject.current_packages
43
+ packages = packages.select { |p| p.name.include?("bitbucket.org") }
44
+ expect(packages.count).to eq(1)
45
+ end
42
46
 
43
- describe '#active?' do
44
- let(:envrc) { '/Users/pivotal/workspace/loggregator/.envrc' }
47
+ context 'if git submodule status fails' do
48
+ before do
49
+ allow(subject).to receive(:capture).with('git submodule status').and_return(['', false])
50
+ end
45
51
 
46
- it 'returns true when .envrc contains GOPATH' do
47
- allow(FileTest).to receive(:exist?).with(envrc).and_return(true)
48
- allow(IO).to receive(:read).with(Pathname(envrc)).and_return('export GOPATH=/foo/bar')
49
- expect(subject.active?).to eq(true)
52
+ it 'should raise an exception' do
53
+ expect { subject.current_packages }.to raise_exception(/git submodule status failed/)
54
+ end
55
+ end
50
56
  end
51
57
 
52
- it 'returns false when .envrc does not contain GOPATH' do
53
- allow(FileTest).to receive(:exist?).with(envrc).and_return(true)
54
- allow(IO).to receive(:read).with(Pathname(envrc)).and_return('this is not an envrc file')
55
- expect(subject.active?).to eq(false)
58
+ describe '#package_path' do
59
+ it 'returns the package_path' do
60
+ expect(subject.package_path).to eq Pathname('/Users/pivotal/workspace/loggregator/.envrc')
61
+ end
56
62
  end
57
63
 
58
- it 'returns false when .envrc does not exist' do
59
- allow(FileTest).to receive(:exist?).with(envrc).and_return(false)
60
- expect(subject.active?).to eq(false)
61
- end
64
+ describe '#active?' do
65
+ let(:envrc) { '/Users/pivotal/workspace/loggregator/.envrc' }
62
66
 
63
- it 'logs the active state' do
64
- expect(logger).to receive(:active)
65
- subject.active?
67
+ it 'returns true when .envrc contains GOPATH' do
68
+ allow(FileTest).to receive(:exist?).with(envrc).and_return(true)
69
+ allow(IO).to receive(:read).with(Pathname(envrc)).and_return('export GOPATH=/foo/bar')
70
+ expect(subject.active?).to eq(true)
71
+ end
72
+
73
+ it 'returns false when .envrc does not contain GOPATH' do
74
+ allow(FileTest).to receive(:exist?).with(envrc).and_return(true)
75
+ allow(IO).to receive(:read).with(Pathname(envrc)).and_return('this is not an envrc file')
76
+ expect(subject.active?).to eq(false)
77
+ end
78
+
79
+ it 'returns false when .envrc does not exist' do
80
+ allow(FileTest).to receive(:exist?).with(envrc).and_return(false)
81
+ expect(subject.active?).to eq(false)
82
+ end
83
+
84
+ it 'logs the active state' do
85
+ expect(logger).to receive(:active)
86
+ subject.active?
87
+ end
66
88
  end
67
89
  end
68
90
  end
@@ -23,6 +23,12 @@ module LicenseFinder
23
23
  expect(subject.to_s).to eq("\n")
24
24
  end
25
25
 
26
+ it 'supports install_path column' do
27
+ dep = Package.new('gem_a', '1.0', install_path: '/tmp/gems/gem_a-1.0')
28
+ subject = described_class.new([dep], columns: %w[name version install_path])
29
+ expect(subject.to_s).to eq("gem_a,1.0,/tmp/gems/gem_a-1.0\n")
30
+ end
31
+
26
32
  it "does not include columns that should only be in merged reports" do
27
33
  dep = Package.new('gem_a', '1.0')
28
34
  subject = described_class.new([dep], columns: %w[subproject_paths])
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: license_finder
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0.rc1
4
+ version: 2.1.0.rc2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jacob Maine
@@ -20,167 +20,179 @@ authors:
20
20
  autorequire:
21
21
  bindir: bin
22
22
  cert_chain: []
23
- date: 2015-11-03 00:00:00.000000000 Z
23
+ date: 2015-12-31 00:00:00.000000000 Z
24
24
  dependencies:
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: bundler
27
27
  requirement: !ruby/object:Gem::Requirement
28
28
  requirements:
29
- - - ">="
29
+ - - ! '>='
30
30
  - !ruby/object:Gem::Version
31
31
  version: '0'
32
32
  type: :runtime
33
33
  prerelease: false
34
34
  version_requirements: !ruby/object:Gem::Requirement
35
35
  requirements:
36
- - - ">="
36
+ - - ! '>='
37
37
  - !ruby/object:Gem::Version
38
38
  version: '0'
39
39
  - !ruby/object:Gem::Dependency
40
40
  name: thor
41
41
  requirement: !ruby/object:Gem::Requirement
42
42
  requirements:
43
- - - ">="
43
+ - - ! '>='
44
44
  - !ruby/object:Gem::Version
45
45
  version: '0'
46
46
  type: :runtime
47
47
  prerelease: false
48
48
  version_requirements: !ruby/object:Gem::Requirement
49
49
  requirements:
50
- - - ">="
50
+ - - ! '>='
51
51
  - !ruby/object:Gem::Version
52
52
  version: '0'
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: httparty
55
55
  requirement: !ruby/object:Gem::Requirement
56
56
  requirements:
57
- - - ">="
57
+ - - ! '>='
58
58
  - !ruby/object:Gem::Version
59
59
  version: '0'
60
60
  type: :runtime
61
61
  prerelease: false
62
62
  version_requirements: !ruby/object:Gem::Requirement
63
63
  requirements:
64
- - - ">="
64
+ - - ! '>='
65
65
  - !ruby/object:Gem::Version
66
66
  version: '0'
67
67
  - !ruby/object:Gem::Dependency
68
68
  name: xml-simple
69
69
  requirement: !ruby/object:Gem::Requirement
70
70
  requirements:
71
- - - ">="
71
+ - - ! '>='
72
72
  - !ruby/object:Gem::Version
73
73
  version: '0'
74
74
  type: :runtime
75
75
  prerelease: false
76
76
  version_requirements: !ruby/object:Gem::Requirement
77
77
  requirements:
78
- - - ">="
78
+ - - ! '>='
79
79
  - !ruby/object:Gem::Version
80
80
  version: '0'
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: rake
83
83
  requirement: !ruby/object:Gem::Requirement
84
84
  requirements:
85
- - - ">="
85
+ - - ! '>='
86
86
  - !ruby/object:Gem::Version
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
90
  version_requirements: !ruby/object:Gem::Requirement
91
91
  requirements:
92
- - - ">="
92
+ - - ! '>='
93
93
  - !ruby/object:Gem::Version
94
94
  version: '0'
95
95
  - !ruby/object:Gem::Dependency
96
96
  name: rspec-its
97
97
  requirement: !ruby/object:Gem::Requirement
98
98
  requirements:
99
- - - ">="
99
+ - - ! '>='
100
100
  - !ruby/object:Gem::Version
101
101
  version: '0'
102
102
  type: :development
103
103
  prerelease: false
104
104
  version_requirements: !ruby/object:Gem::Requirement
105
105
  requirements:
106
- - - ">="
106
+ - - ! '>='
107
107
  - !ruby/object:Gem::Version
108
108
  version: '0'
109
109
  - !ruby/object:Gem::Dependency
110
110
  name: fakefs
111
111
  requirement: !ruby/object:Gem::Requirement
112
112
  requirements:
113
- - - ">="
113
+ - - ! '>='
114
114
  - !ruby/object:Gem::Version
115
115
  version: '0'
116
116
  type: :development
117
117
  prerelease: false
118
118
  version_requirements: !ruby/object:Gem::Requirement
119
119
  requirements:
120
- - - ">="
120
+ - - ! '>='
121
121
  - !ruby/object:Gem::Version
122
122
  version: '0'
123
123
  - !ruby/object:Gem::Dependency
124
124
  name: pry
125
125
  requirement: !ruby/object:Gem::Requirement
126
126
  requirements:
127
- - - ">="
127
+ - - ! '>='
128
128
  - !ruby/object:Gem::Version
129
129
  version: '0'
130
130
  type: :development
131
131
  prerelease: false
132
132
  version_requirements: !ruby/object:Gem::Requirement
133
133
  requirements:
134
- - - ">="
134
+ - - ! '>='
135
135
  - !ruby/object:Gem::Version
136
136
  version: '0'
137
137
  - !ruby/object:Gem::Dependency
138
138
  name: rspec
139
139
  requirement: !ruby/object:Gem::Requirement
140
140
  requirements:
141
- - - "~>"
141
+ - - ~>
142
142
  - !ruby/object:Gem::Version
143
143
  version: '3'
144
144
  type: :development
145
145
  prerelease: false
146
146
  version_requirements: !ruby/object:Gem::Requirement
147
147
  requirements:
148
- - - "~>"
148
+ - - ~>
149
149
  - !ruby/object:Gem::Version
150
150
  version: '3'
151
151
  - !ruby/object:Gem::Dependency
152
152
  name: capybara
153
153
  requirement: !ruby/object:Gem::Requirement
154
154
  requirements:
155
- - - "~>"
155
+ - - ~>
156
156
  - !ruby/object:Gem::Version
157
157
  version: 2.0.0
158
158
  type: :development
159
159
  prerelease: false
160
160
  version_requirements: !ruby/object:Gem::Requirement
161
161
  requirements:
162
- - - "~>"
162
+ - - ~>
163
163
  - !ruby/object:Gem::Version
164
164
  version: 2.0.0
165
165
  - !ruby/object:Gem::Dependency
166
166
  name: webmock
167
167
  requirement: !ruby/object:Gem::Requirement
168
168
  requirements:
169
- - - "~>"
169
+ - - ~>
170
170
  - !ruby/object:Gem::Version
171
171
  version: '1.13'
172
172
  type: :development
173
173
  prerelease: false
174
174
  version_requirements: !ruby/object:Gem::Requirement
175
175
  requirements:
176
- - - "~>"
176
+ - - ~>
177
177
  - !ruby/object:Gem::Version
178
178
  version: '1.13'
179
- description: |2
180
- LicenseFinder works with your package managers to find
181
- dependencies, detect the licenses of the packages in them, compare
182
- those licenses against a user-defined whitelist, and give you an
183
- actionable exception report.
179
+ - !ruby/object:Gem::Dependency
180
+ name: mime-types
181
+ requirement: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - <
184
+ - !ruby/object:Gem::Version
185
+ version: '3.0'
186
+ type: :development
187
+ prerelease: false
188
+ version_requirements: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - <
191
+ - !ruby/object:Gem::Version
192
+ version: '3.0'
193
+ description: ! " LicenseFinder works with your package managers to find\n dependencies,
194
+ detect the licenses of the packages in them, compare\n those licenses against
195
+ a user-defined whitelist, and give you an\n actionable exception report.\n"
184
196
  email:
185
197
  - commoncode@pivotalabs.com
186
198
  executables:
@@ -189,14 +201,14 @@ executables:
189
201
  extensions: []
190
202
  extra_rdoc_files: []
191
203
  files:
192
- - ".force-build"
193
- - ".gitignore"
194
- - ".rspec"
195
- - ".travis.yml"
196
- - ".travis/install_bower.sh"
197
- - ".travis/install_godep.sh"
198
- - ".travis/install_gradle.sh"
199
- - ".travis/install_rebar.sh"
204
+ - .force-build
205
+ - .gitignore
206
+ - .rspec
207
+ - .travis.yml
208
+ - .travis/install_bower.sh
209
+ - .travis/install_godep.sh
210
+ - .travis/install_gradle.sh
211
+ - .travis/install_rebar.sh
200
212
  - CHANGELOG.rdoc
201
213
  - CONTRIBUTING.md
202
214
  - Gemfile
@@ -434,12 +446,12 @@ require_paths:
434
446
  - lib
435
447
  required_ruby_version: !ruby/object:Gem::Requirement
436
448
  requirements:
437
- - - ">="
449
+ - - ! '>='
438
450
  - !ruby/object:Gem::Version
439
451
  version: 1.9.3
440
452
  required_rubygems_version: !ruby/object:Gem::Requirement
441
453
  requirements:
442
- - - ">"
454
+ - - ! '>'
443
455
  - !ruby/object:Gem::Version
444
456
  version: 1.3.1
445
457
  requirements: []