license_finder 2.1.0.rc1 → 2.1.0.rc2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: []