license_finder 1.0.1 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.travis.yml +0 -1
- data/features/step_definitions/cli_steps.rb +1 -1
- data/{files/license_finder.yml → lib/data/license_finder.example.yml} +1 -0
- data/lib/license_finder/configuration.rb +5 -3
- data/lib/license_finder/package.rb +0 -16
- data/lib/license_finder/package_managers/gradle.rb +2 -2
- data/license_finder.gemspec +4 -3
- data/readme.md +24 -5
- data/spec/lib/license_finder/cli_spec.rb +9 -9
- data/spec/lib/license_finder/configuration_spec.rb +9 -3
- data/spec/lib/license_finder/package_managers/gradle_spec.rb +10 -1
- data/spec/lib/license_finder/yml_to_sql_spec.rb +2 -2
- data/spec/spec_helper.rb +1 -0
- metadata +63 -79
- data/files/dependency_breakdown.png +0 -0
- data/files/report_breakdown.png +0 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 6965ddeb70d6a9462f426dd9314a07920e83e953
|
4
|
+
data.tar.gz: 197642f07c0032fe03328103cdd7e6f7c4845640
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 978887a4a20f652a84f8af8347cc03764b23c8c487b5a8ca266bd578a8e3ee43c5b323f652bd7238b9ca915f01b676d66a0a12ea9681b8bfc93551ca9d17cd2d
|
7
|
+
data.tar.gz: 8fc6ec156a538862da5790caef509802d6f740c1d2257c37e1e1bc17d9c67beddaeb648f058e0d36bc9bbaeab1d4e0b05aa3ac13c51625c60d4a56a00243ba69
|
data/.travis.yml
CHANGED
@@ -22,7 +22,7 @@ end
|
|
22
22
|
|
23
23
|
Then(/^it creates a config directory with the license_finder config$/) do
|
24
24
|
@user.config_path.should be_exist
|
25
|
-
text =
|
25
|
+
text = %|---\nwhitelist:\n#- MIT\n#- Apache 2.0\nignore_groups:\n#- test\n#- development\nignore_dependencies:\n#- bundler\ndependencies_file_dir: './doc/'\nproject_name: # project name\ngradle_command: # only meaningful if used with a Java/gradle project. Defaults to "gradle".\n|
|
26
26
|
@user.config_file.read.should == text.gsub(/^\s+/, "")
|
27
27
|
end
|
28
28
|
|
@@ -28,7 +28,7 @@ module LicenseFinder
|
|
28
28
|
result
|
29
29
|
end
|
30
30
|
|
31
|
-
attr_accessor :whitelist, :ignore_groups, :ignore_dependencies, :artifacts, :project_name
|
31
|
+
attr_accessor :whitelist, :ignore_groups, :ignore_dependencies, :artifacts, :project_name, :gradle_command
|
32
32
|
|
33
33
|
def initialize(config)
|
34
34
|
@whitelist = Array(config['whitelist'])
|
@@ -36,6 +36,7 @@ module LicenseFinder
|
|
36
36
|
@ignore_dependencies = Array(config["ignore_dependencies"])
|
37
37
|
@artifacts = Artifacts.new(Pathname(config['dependencies_file_dir'] || './doc/'))
|
38
38
|
@project_name = config['project_name'] || determine_project_name
|
39
|
+
@gradle_command = config['gradle_command'] || 'gradle'
|
39
40
|
end
|
40
41
|
|
41
42
|
def save
|
@@ -50,7 +51,8 @@ module LicenseFinder
|
|
50
51
|
'ignore_groups' => ignore_groups.uniq,
|
51
52
|
'ignore_dependencies' => ignore_dependencies.uniq,
|
52
53
|
'dependencies_file_dir' => artifacts.dir.to_s,
|
53
|
-
'project_name' => project_name
|
54
|
+
'project_name' => project_name,
|
55
|
+
'gradle_command' => gradle_command
|
54
56
|
}
|
55
57
|
end
|
56
58
|
|
@@ -147,7 +149,7 @@ module LicenseFinder
|
|
147
149
|
end
|
148
150
|
|
149
151
|
def file_template
|
150
|
-
ROOT_PATH.join('
|
152
|
+
ROOT_PATH.join('data', 'license_finder.example.yml')
|
151
153
|
end
|
152
154
|
end
|
153
155
|
end
|
@@ -41,22 +41,6 @@ module LicenseFinder
|
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
|
-
# def multiple_licenses_from_spec_and_files?
|
45
|
-
# (licenses_from_spec+licenses_from_files).uniq.size > 1
|
46
|
-
# end
|
47
|
-
|
48
|
-
# def one_license_from_spec?
|
49
|
-
# licenses_from_spec.uniq.size == 1
|
50
|
-
# end
|
51
|
-
|
52
|
-
# def one_license_from_files?
|
53
|
-
# licenses_from_files.uniq.size == 1
|
54
|
-
# end
|
55
|
-
|
56
|
-
# def no_licenses_from_spec?
|
57
|
-
# licenses_from_spec.uniq.size == 0
|
58
|
-
# end
|
59
|
-
|
60
44
|
def licenses_from_spec
|
61
45
|
license_names_from_spec.map do |name|
|
62
46
|
License.find_by_name(name)
|
@@ -3,14 +3,14 @@ require "xmlsimple"
|
|
3
3
|
module LicenseFinder
|
4
4
|
class Gradle
|
5
5
|
def self.current_packages
|
6
|
-
|
6
|
+
`#{LicenseFinder.config.gradle_command} downloadLicenses`
|
7
7
|
|
8
8
|
xml = license_report.read
|
9
9
|
|
10
10
|
options = {
|
11
11
|
'GroupTags' => { 'dependencies' => 'dependency' }
|
12
12
|
}
|
13
|
-
XmlSimple.xml_in(xml, options)[
|
13
|
+
XmlSimple.xml_in(xml, options).fetch('dependency', []).map do |d|
|
14
14
|
d["license"].reject! { |l| l["name"] == "No license found" }
|
15
15
|
GradlePackage.new(d)
|
16
16
|
end
|
data/license_finder.gemspec
CHANGED
@@ -3,8 +3,8 @@ require './lib/license_finder/platform'
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.required_ruby_version = '>= 1.9.3'
|
5
5
|
s.name = "license_finder"
|
6
|
-
s.version = "1.0
|
7
|
-
s.authors = ["Jacob Maine", "Matthew Kane Parker", "Ian Lesperance", "David Edwards", "Paul Meskers", "Brent Wheeldon", "Trevor John", "David Tengdin", "William Ramsey", "David Dening"]
|
6
|
+
s.version = "1.1.0"
|
7
|
+
s.authors = ["Jacob Maine", "Matthew Kane Parker", "Ian Lesperance", "David Edwards", "Paul Meskers", "Brent Wheeldon", "Trevor John", "David Tengdin", "William Ramsey", "David Dening", "Geoff Pleiss", "Mike Chinigo"]
|
8
8
|
s.email = ["commoncode@pivotalabs.com"]
|
9
9
|
s.homepage = "https://github.com/pivotal/LicenseFinder"
|
10
10
|
s.summary = "Audit the OSS licenses of your application's dependencies."
|
@@ -26,10 +26,11 @@ Gem::Specification.new do |s|
|
|
26
26
|
s.add_dependency "xml-simple"
|
27
27
|
s.add_dependency LicenseFinder::Platform.sqlite_gem
|
28
28
|
|
29
|
-
%w(rake rspec xpath cucumber pry).each do |gem|
|
29
|
+
%w(rake rspec-its xpath cucumber pry).each do |gem|
|
30
30
|
s.add_development_dependency gem
|
31
31
|
end
|
32
32
|
|
33
|
+
s.add_development_dependency "rspec", "~> 3"
|
33
34
|
s.add_development_dependency "capybara", "~> 2.0.0"
|
34
35
|
s.add_development_dependency "webmock", "~> 1.13"
|
35
36
|
s.add_development_dependency "cocoapods" if RUBY_PLATFORM =~ /darwin/
|
data/readme.md
CHANGED
@@ -24,11 +24,6 @@ Add license_finder to your project's Gemfile and `bundle`:
|
|
24
24
|
gem 'license_finder'
|
25
25
|
```
|
26
26
|
|
27
|
-
#### For gradle projects
|
28
|
-
|
29
|
-
You need to install the license gradle plugin: [https://github.com/hierynomus/license-gradle-plugin](https://github.com/hierynomus/license-gradle-plugin)
|
30
|
-
|
31
|
-
|
32
27
|
## Usage
|
33
28
|
|
34
29
|
|
@@ -156,6 +151,7 @@ ignore_dependencies:
|
|
156
151
|
#- bundler
|
157
152
|
dependencies_file_dir: './doc/'
|
158
153
|
project_name: My Project Name
|
154
|
+
gradle_command: # only meaningful if used with a Java/gradle project. Defaults to "gradle".
|
159
155
|
```
|
160
156
|
|
161
157
|
By modifying this file, you can configure license_finder's behavior.
|
@@ -170,11 +166,34 @@ license_finder with different versions of bundler.)
|
|
170
166
|
- You can store the license database and text files in another directory by changing
|
171
167
|
`dependencies_file_dir`. And the `project_name`, which defaults to your working
|
172
168
|
directory, appears in the [HTML report](#html-report).
|
169
|
+
- See below for explanation of "gradle_command".
|
173
170
|
|
174
171
|
You can also configure license_finder through the command line. See
|
175
172
|
`license_finder whitelist help`, `license_finder ignored_bundler_groups help`
|
176
173
|
and `license_finder project_name help` for more details.
|
177
174
|
|
175
|
+
### For gradle projects
|
176
|
+
|
177
|
+
You need to install the license gradle plugin: [https://github.com/hierynomus/license-gradle-plugin](https://github.com/hierynomus/license-gradle-plugin)
|
178
|
+
|
179
|
+
LicenseFinder assumes that gradle is on your shell's include path and is invoked by just calling `gradle`. If you invoke gradle some other way (say, with a custom `gradlew` script), set the `gradle_command` option in your project's `license_finder.yml`:
|
180
|
+
|
181
|
+
```yaml
|
182
|
+
# … other configuration …
|
183
|
+
|
184
|
+
gradle_command: ./gradlew
|
185
|
+
```
|
186
|
+
|
187
|
+
By default, license_finder will report on gradle's "runtime" dependencies. If you want to generate a report for some other dependency configuration (e.g. Android projects will sometimes specify their meaningful dependencies in the "compile" group), you can specify it in your project's `build.gradle` like so:
|
188
|
+
|
189
|
+
```
|
190
|
+
// Must come *after* the 'apply plugin: license' line
|
191
|
+
|
192
|
+
downloadLicenses {
|
193
|
+
dependencyConfiguration "compile"
|
194
|
+
}
|
195
|
+
```
|
196
|
+
|
178
197
|
## HTML Report
|
179
198
|
|
180
199
|
The HTML report generated by license_finder shows a summary of the project's dependencies
|
@@ -57,7 +57,7 @@ module LicenseFinder
|
|
57
57
|
it "adds the specified license to the whitelist" do
|
58
58
|
config.whitelist.should_receive(:push).with("test")
|
59
59
|
config.should_receive(:save)
|
60
|
-
|
60
|
+
expect(DependencyManager).to receive(:sync_with_package_managers)
|
61
61
|
|
62
62
|
silence_stdout do
|
63
63
|
subject.add("test")
|
@@ -68,7 +68,7 @@ module LicenseFinder
|
|
68
68
|
config.whitelist.should_receive(:push).with("test")
|
69
69
|
config.whitelist.should_receive(:push).with("rest")
|
70
70
|
config.should_receive(:save)
|
71
|
-
|
71
|
+
expect(DependencyManager).to receive(:sync_with_package_managers)
|
72
72
|
|
73
73
|
silence_stdout do
|
74
74
|
subject.add("test", "rest")
|
@@ -80,7 +80,7 @@ module LicenseFinder
|
|
80
80
|
it "removes the specified license from the whitelist" do
|
81
81
|
config.should_receive(:save)
|
82
82
|
config.whitelist.should_receive(:delete).with("test")
|
83
|
-
|
83
|
+
expect(DependencyManager).to receive(:sync_with_package_managers)
|
84
84
|
|
85
85
|
silence_stdout do
|
86
86
|
|
@@ -92,7 +92,7 @@ module LicenseFinder
|
|
92
92
|
config.should_receive(:save)
|
93
93
|
config.whitelist.should_receive(:delete).with("test")
|
94
94
|
config.whitelist.should_receive(:delete).with("rest")
|
95
|
-
|
95
|
+
expect(DependencyManager).to receive(:sync_with_package_managers)
|
96
96
|
|
97
97
|
silence_stdout do
|
98
98
|
subject.remove("test", "rest")
|
@@ -108,7 +108,7 @@ module LicenseFinder
|
|
108
108
|
it "sets the project name" do
|
109
109
|
config.should_receive(:save)
|
110
110
|
config.project_name.should_not eq("new_project_name")
|
111
|
-
|
111
|
+
expect(DependencyManager).to receive(:sync_with_package_managers)
|
112
112
|
|
113
113
|
silence_stdout do
|
114
114
|
subject.set("new_project_name")
|
@@ -134,7 +134,7 @@ module LicenseFinder
|
|
134
134
|
it "adds the specified group to the ignored groups list" do
|
135
135
|
config.ignore_groups.should_receive(:push).with("test")
|
136
136
|
config.should_receive(:save)
|
137
|
-
|
137
|
+
expect(DependencyManager).to receive(:sync_with_package_managers)
|
138
138
|
|
139
139
|
silence_stdout do
|
140
140
|
subject.add("test")
|
@@ -146,7 +146,7 @@ module LicenseFinder
|
|
146
146
|
it "removes the specified group from the ignored groups list" do
|
147
147
|
config.ignore_groups.should_receive(:delete).with("test")
|
148
148
|
config.should_receive(:save)
|
149
|
-
|
149
|
+
expect(DependencyManager).to receive(:sync_with_package_managers)
|
150
150
|
|
151
151
|
silence_stdout do
|
152
152
|
subject.remove("test")
|
@@ -178,7 +178,7 @@ module LicenseFinder
|
|
178
178
|
it "adds the specified group to the ignored groups list" do
|
179
179
|
config.ignore_dependencies.should_receive(:push).with("test")
|
180
180
|
config.should_receive(:save)
|
181
|
-
|
181
|
+
expect(DependencyManager).to receive(:sync_with_package_managers)
|
182
182
|
|
183
183
|
silence_stdout do
|
184
184
|
subject.add("test")
|
@@ -190,7 +190,7 @@ module LicenseFinder
|
|
190
190
|
it "removes the specified group from the ignored groups list" do
|
191
191
|
config.ignore_dependencies.should_receive(:delete).with("test")
|
192
192
|
config.should_receive(:save)
|
193
|
-
|
193
|
+
expect(DependencyManager).to receive(:sync_with_package_managers)
|
194
194
|
|
195
195
|
silence_stdout do
|
196
196
|
subject.remove("test")
|
@@ -29,6 +29,7 @@ module LicenseFinder
|
|
29
29
|
subject.ignore_groups.should == []
|
30
30
|
subject.ignore_dependencies.should == []
|
31
31
|
subject.artifacts.dir.should == Pathname('./doc/')
|
32
|
+
subject.gradle_command.should == 'gradle'
|
32
33
|
end
|
33
34
|
|
34
35
|
it "should default missing attributes even if they are saved as nils in the YAML file" do
|
@@ -37,7 +38,8 @@ module LicenseFinder
|
|
37
38
|
"ignore_groups" => nil,
|
38
39
|
"ignore_dependencies" => nil,
|
39
40
|
"dependencies_file_dir" => nil,
|
40
|
-
"project_name" => nil
|
41
|
+
"project_name" => nil,
|
42
|
+
"gradle_command" => nil
|
41
43
|
}
|
42
44
|
subject = described_class.new(attributes)
|
43
45
|
subject.whitelist.should == []
|
@@ -45,6 +47,7 @@ module LicenseFinder
|
|
45
47
|
subject.ignore_dependencies.should == []
|
46
48
|
subject.artifacts.dir.should == Pathname('./doc/')
|
47
49
|
subject.project_name.should_not be_nil
|
50
|
+
subject.gradle_command.should == 'gradle'
|
48
51
|
end
|
49
52
|
|
50
53
|
it "should set the all of the attributes on the instance" do
|
@@ -53,7 +56,8 @@ module LicenseFinder
|
|
53
56
|
"ignore_groups" => %w{test development},
|
54
57
|
"ignore_dependencies" => %w{bundler},
|
55
58
|
"dependencies_file_dir" => "some/path",
|
56
|
-
"project_name" => "my_app"
|
59
|
+
"project_name" => "my_app",
|
60
|
+
"gradle_command" => "./gradlew"
|
57
61
|
}
|
58
62
|
subject = described_class.new(attributes)
|
59
63
|
subject.whitelist.should == %w{a whitelist}
|
@@ -61,6 +65,7 @@ module LicenseFinder
|
|
61
65
|
subject.ignore_dependencies.should == %w{bundler}
|
62
66
|
subject.artifacts.dir.should == Pathname("some/path")
|
63
67
|
subject.project_name.should == "my_app"
|
68
|
+
subject.gradle_command.should == "./gradlew"
|
64
69
|
end
|
65
70
|
end
|
66
71
|
|
@@ -95,7 +100,8 @@ module LicenseFinder
|
|
95
100
|
'ignore_groups' => ['other_group', 'test'],
|
96
101
|
'ignore_dependencies' => ['bundler'],
|
97
102
|
'project_name' => "New Project Name",
|
98
|
-
'dependencies_file_dir' => "./deps"
|
103
|
+
'dependencies_file_dir' => "./deps",
|
104
|
+
'gradle_command' => './gradle'
|
99
105
|
}
|
100
106
|
end
|
101
107
|
|
@@ -12,7 +12,8 @@ module LicenseFinder
|
|
12
12
|
|
13
13
|
describe '.current_packages' do
|
14
14
|
before do
|
15
|
-
|
15
|
+
allow(LicenseFinder.config).to receive(:gradle_command) { 'gradlefoo' }
|
16
|
+
expect(described_class).to receive(:`).with(/gradlefoo downloadLicenses/)
|
16
17
|
end
|
17
18
|
|
18
19
|
it 'lists all the current packages' do
|
@@ -63,6 +64,14 @@ module LicenseFinder
|
|
63
64
|
GradlePackage.should_receive(:new).with("license" => [])
|
64
65
|
Gradle.current_packages
|
65
66
|
end
|
67
|
+
|
68
|
+
it "handles an empty list of licenses" do
|
69
|
+
license_xml = license_xml("")
|
70
|
+
|
71
|
+
fake_file = double(:license_report, read: license_xml)
|
72
|
+
allow(Gradle).to receive(:license_report).and_return(fake_file)
|
73
|
+
Gradle.current_packages
|
74
|
+
end
|
66
75
|
end
|
67
76
|
|
68
77
|
describe '.active?' do
|
@@ -29,14 +29,14 @@ module LicenseFinder
|
|
29
29
|
yaml_file = double(:yaml_file, :exist? => true)
|
30
30
|
LicenseFinder.config.artifacts.stub(legacy_yaml_file: yaml_file)
|
31
31
|
|
32
|
-
described_class.needs_conversion?.should
|
32
|
+
described_class.needs_conversion?.should be_truthy
|
33
33
|
end
|
34
34
|
|
35
35
|
it "is false otherwise" do
|
36
36
|
yaml_file = double(:yaml_file, :exist? => false)
|
37
37
|
LicenseFinder.config.artifacts.stub(legacy_yaml_file: yaml_file)
|
38
38
|
|
39
|
-
described_class.needs_conversion?.should
|
39
|
+
described_class.needs_conversion?.should be_falsey
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: license_finder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
5
|
-
prerelease:
|
4
|
+
version: 1.1.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Jacob Maine
|
@@ -15,241 +14,229 @@ authors:
|
|
15
14
|
- David Tengdin
|
16
15
|
- William Ramsey
|
17
16
|
- David Dening
|
17
|
+
- Geoff Pleiss
|
18
|
+
- Mike Chinigo
|
18
19
|
autorequire:
|
19
20
|
bindir: bin
|
20
21
|
cert_chain: []
|
21
|
-
date: 2014-
|
22
|
+
date: 2014-06-09 00:00:00.000000000 Z
|
22
23
|
dependencies:
|
23
24
|
- !ruby/object:Gem::Dependency
|
24
25
|
name: bundler
|
25
26
|
requirement: !ruby/object:Gem::Requirement
|
26
|
-
none: false
|
27
27
|
requirements:
|
28
|
-
- -
|
28
|
+
- - ">="
|
29
29
|
- !ruby/object:Gem::Version
|
30
30
|
version: '0'
|
31
31
|
type: :runtime
|
32
32
|
prerelease: false
|
33
33
|
version_requirements: !ruby/object:Gem::Requirement
|
34
|
-
none: false
|
35
34
|
requirements:
|
36
|
-
- -
|
35
|
+
- - ">="
|
37
36
|
- !ruby/object:Gem::Version
|
38
37
|
version: '0'
|
39
38
|
- !ruby/object:Gem::Dependency
|
40
39
|
name: sequel
|
41
40
|
requirement: !ruby/object:Gem::Requirement
|
42
|
-
none: false
|
43
41
|
requirements:
|
44
|
-
- -
|
42
|
+
- - ">="
|
45
43
|
- !ruby/object:Gem::Version
|
46
44
|
version: '0'
|
47
45
|
type: :runtime
|
48
46
|
prerelease: false
|
49
47
|
version_requirements: !ruby/object:Gem::Requirement
|
50
|
-
none: false
|
51
48
|
requirements:
|
52
|
-
- -
|
49
|
+
- - ">="
|
53
50
|
- !ruby/object:Gem::Version
|
54
51
|
version: '0'
|
55
52
|
- !ruby/object:Gem::Dependency
|
56
53
|
name: thor
|
57
54
|
requirement: !ruby/object:Gem::Requirement
|
58
|
-
none: false
|
59
55
|
requirements:
|
60
|
-
- -
|
56
|
+
- - ">="
|
61
57
|
- !ruby/object:Gem::Version
|
62
58
|
version: '0'
|
63
59
|
type: :runtime
|
64
60
|
prerelease: false
|
65
61
|
version_requirements: !ruby/object:Gem::Requirement
|
66
|
-
none: false
|
67
62
|
requirements:
|
68
|
-
- -
|
63
|
+
- - ">="
|
69
64
|
- !ruby/object:Gem::Version
|
70
65
|
version: '0'
|
71
66
|
- !ruby/object:Gem::Dependency
|
72
67
|
name: httparty
|
73
68
|
requirement: !ruby/object:Gem::Requirement
|
74
|
-
none: false
|
75
69
|
requirements:
|
76
|
-
- -
|
70
|
+
- - ">="
|
77
71
|
- !ruby/object:Gem::Version
|
78
72
|
version: '0'
|
79
73
|
type: :runtime
|
80
74
|
prerelease: false
|
81
75
|
version_requirements: !ruby/object:Gem::Requirement
|
82
|
-
none: false
|
83
76
|
requirements:
|
84
|
-
- -
|
77
|
+
- - ">="
|
85
78
|
- !ruby/object:Gem::Version
|
86
79
|
version: '0'
|
87
80
|
- !ruby/object:Gem::Dependency
|
88
81
|
name: xml-simple
|
89
82
|
requirement: !ruby/object:Gem::Requirement
|
90
|
-
none: false
|
91
83
|
requirements:
|
92
|
-
- -
|
84
|
+
- - ">="
|
93
85
|
- !ruby/object:Gem::Version
|
94
86
|
version: '0'
|
95
87
|
type: :runtime
|
96
88
|
prerelease: false
|
97
89
|
version_requirements: !ruby/object:Gem::Requirement
|
98
|
-
none: false
|
99
90
|
requirements:
|
100
|
-
- -
|
91
|
+
- - ">="
|
101
92
|
- !ruby/object:Gem::Version
|
102
93
|
version: '0'
|
103
94
|
- !ruby/object:Gem::Dependency
|
104
95
|
name: sqlite3
|
105
96
|
requirement: !ruby/object:Gem::Requirement
|
106
|
-
none: false
|
107
97
|
requirements:
|
108
|
-
- -
|
98
|
+
- - ">="
|
109
99
|
- !ruby/object:Gem::Version
|
110
100
|
version: '0'
|
111
101
|
type: :runtime
|
112
102
|
prerelease: false
|
113
103
|
version_requirements: !ruby/object:Gem::Requirement
|
114
|
-
none: false
|
115
104
|
requirements:
|
116
|
-
- -
|
105
|
+
- - ">="
|
117
106
|
- !ruby/object:Gem::Version
|
118
107
|
version: '0'
|
119
108
|
- !ruby/object:Gem::Dependency
|
120
109
|
name: rake
|
121
110
|
requirement: !ruby/object:Gem::Requirement
|
122
|
-
none: false
|
123
111
|
requirements:
|
124
|
-
- -
|
112
|
+
- - ">="
|
125
113
|
- !ruby/object:Gem::Version
|
126
114
|
version: '0'
|
127
115
|
type: :development
|
128
116
|
prerelease: false
|
129
117
|
version_requirements: !ruby/object:Gem::Requirement
|
130
|
-
none: false
|
131
118
|
requirements:
|
132
|
-
- -
|
119
|
+
- - ">="
|
133
120
|
- !ruby/object:Gem::Version
|
134
121
|
version: '0'
|
135
122
|
- !ruby/object:Gem::Dependency
|
136
|
-
name: rspec
|
123
|
+
name: rspec-its
|
137
124
|
requirement: !ruby/object:Gem::Requirement
|
138
|
-
none: false
|
139
125
|
requirements:
|
140
|
-
- -
|
126
|
+
- - ">="
|
141
127
|
- !ruby/object:Gem::Version
|
142
128
|
version: '0'
|
143
129
|
type: :development
|
144
130
|
prerelease: false
|
145
131
|
version_requirements: !ruby/object:Gem::Requirement
|
146
|
-
none: false
|
147
132
|
requirements:
|
148
|
-
- -
|
133
|
+
- - ">="
|
149
134
|
- !ruby/object:Gem::Version
|
150
135
|
version: '0'
|
151
136
|
- !ruby/object:Gem::Dependency
|
152
137
|
name: xpath
|
153
138
|
requirement: !ruby/object:Gem::Requirement
|
154
|
-
none: false
|
155
139
|
requirements:
|
156
|
-
- -
|
140
|
+
- - ">="
|
157
141
|
- !ruby/object:Gem::Version
|
158
142
|
version: '0'
|
159
143
|
type: :development
|
160
144
|
prerelease: false
|
161
145
|
version_requirements: !ruby/object:Gem::Requirement
|
162
|
-
none: false
|
163
146
|
requirements:
|
164
|
-
- -
|
147
|
+
- - ">="
|
165
148
|
- !ruby/object:Gem::Version
|
166
149
|
version: '0'
|
167
150
|
- !ruby/object:Gem::Dependency
|
168
151
|
name: cucumber
|
169
152
|
requirement: !ruby/object:Gem::Requirement
|
170
|
-
none: false
|
171
153
|
requirements:
|
172
|
-
- -
|
154
|
+
- - ">="
|
173
155
|
- !ruby/object:Gem::Version
|
174
156
|
version: '0'
|
175
157
|
type: :development
|
176
158
|
prerelease: false
|
177
159
|
version_requirements: !ruby/object:Gem::Requirement
|
178
|
-
none: false
|
179
160
|
requirements:
|
180
|
-
- -
|
161
|
+
- - ">="
|
181
162
|
- !ruby/object:Gem::Version
|
182
163
|
version: '0'
|
183
164
|
- !ruby/object:Gem::Dependency
|
184
165
|
name: pry
|
185
166
|
requirement: !ruby/object:Gem::Requirement
|
186
|
-
none: false
|
187
167
|
requirements:
|
188
|
-
- -
|
168
|
+
- - ">="
|
189
169
|
- !ruby/object:Gem::Version
|
190
170
|
version: '0'
|
191
171
|
type: :development
|
192
172
|
prerelease: false
|
193
173
|
version_requirements: !ruby/object:Gem::Requirement
|
194
|
-
none: false
|
195
174
|
requirements:
|
196
|
-
- -
|
175
|
+
- - ">="
|
197
176
|
- !ruby/object:Gem::Version
|
198
177
|
version: '0'
|
178
|
+
- !ruby/object:Gem::Dependency
|
179
|
+
name: rspec
|
180
|
+
requirement: !ruby/object:Gem::Requirement
|
181
|
+
requirements:
|
182
|
+
- - "~>"
|
183
|
+
- !ruby/object:Gem::Version
|
184
|
+
version: '3'
|
185
|
+
type: :development
|
186
|
+
prerelease: false
|
187
|
+
version_requirements: !ruby/object:Gem::Requirement
|
188
|
+
requirements:
|
189
|
+
- - "~>"
|
190
|
+
- !ruby/object:Gem::Version
|
191
|
+
version: '3'
|
199
192
|
- !ruby/object:Gem::Dependency
|
200
193
|
name: capybara
|
201
194
|
requirement: !ruby/object:Gem::Requirement
|
202
|
-
none: false
|
203
195
|
requirements:
|
204
|
-
- - ~>
|
196
|
+
- - "~>"
|
205
197
|
- !ruby/object:Gem::Version
|
206
198
|
version: 2.0.0
|
207
199
|
type: :development
|
208
200
|
prerelease: false
|
209
201
|
version_requirements: !ruby/object:Gem::Requirement
|
210
|
-
none: false
|
211
202
|
requirements:
|
212
|
-
- - ~>
|
203
|
+
- - "~>"
|
213
204
|
- !ruby/object:Gem::Version
|
214
205
|
version: 2.0.0
|
215
206
|
- !ruby/object:Gem::Dependency
|
216
207
|
name: webmock
|
217
208
|
requirement: !ruby/object:Gem::Requirement
|
218
|
-
none: false
|
219
209
|
requirements:
|
220
|
-
- - ~>
|
210
|
+
- - "~>"
|
221
211
|
- !ruby/object:Gem::Version
|
222
212
|
version: '1.13'
|
223
213
|
type: :development
|
224
214
|
prerelease: false
|
225
215
|
version_requirements: !ruby/object:Gem::Requirement
|
226
|
-
none: false
|
227
216
|
requirements:
|
228
|
-
- - ~>
|
217
|
+
- - "~>"
|
229
218
|
- !ruby/object:Gem::Version
|
230
219
|
version: '1.13'
|
231
220
|
- !ruby/object:Gem::Dependency
|
232
221
|
name: cocoapods
|
233
222
|
requirement: !ruby/object:Gem::Requirement
|
234
|
-
none: false
|
235
223
|
requirements:
|
236
|
-
- -
|
224
|
+
- - ">="
|
237
225
|
- !ruby/object:Gem::Version
|
238
226
|
version: '0'
|
239
227
|
type: :development
|
240
228
|
prerelease: false
|
241
229
|
version_requirements: !ruby/object:Gem::Requirement
|
242
|
-
none: false
|
243
230
|
requirements:
|
244
|
-
- -
|
231
|
+
- - ">="
|
245
232
|
- !ruby/object:Gem::Version
|
246
233
|
version: '0'
|
247
|
-
description:
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
234
|
+
description: |2
|
235
|
+
Do you know the licenses of all your application's dependencies? What open source software licenses will your business accept?
|
236
|
+
|
237
|
+
LicenseFinder culls your package managers, detects the licenses of the packages in them, and gives you a report that you can act on. If you already know
|
238
|
+
what licenses your business is comfortable with, you can whitelist them, leaving you with an action report of only those dependencies that have
|
239
|
+
licenses that fall outside of the whitelist.
|
253
240
|
email:
|
254
241
|
- commoncode@pivotalabs.com
|
255
242
|
executables:
|
@@ -257,10 +244,10 @@ executables:
|
|
257
244
|
extensions: []
|
258
245
|
extra_rdoc_files: []
|
259
246
|
files:
|
260
|
-
- .force-build
|
261
|
-
- .gitignore
|
262
|
-
- .rspec
|
263
|
-
- .travis.yml
|
247
|
+
- ".force-build"
|
248
|
+
- ".gitignore"
|
249
|
+
- ".rspec"
|
250
|
+
- ".travis.yml"
|
264
251
|
- CHANGELOG.rdoc
|
265
252
|
- Gemfile
|
266
253
|
- LICENSE
|
@@ -319,9 +306,7 @@ files:
|
|
319
306
|
- features/step_definitions/report_csv_steps.rb
|
320
307
|
- features/step_definitions/report_html_steps.rb
|
321
308
|
- features/step_definitions/shared_steps.rb
|
322
|
-
-
|
323
|
-
- files/license_finder.yml
|
324
|
-
- files/report_breakdown.png
|
309
|
+
- lib/data/license_finder.example.yml
|
325
310
|
- lib/data/licenses/Apache2.txt
|
326
311
|
- lib/data/licenses/BSD.txt
|
327
312
|
- lib/data/licenses/GPLv2.txt
|
@@ -446,27 +431,26 @@ files:
|
|
446
431
|
homepage: https://github.com/pivotal/LicenseFinder
|
447
432
|
licenses:
|
448
433
|
- MIT
|
434
|
+
metadata: {}
|
449
435
|
post_install_message:
|
450
436
|
rdoc_options: []
|
451
437
|
require_paths:
|
452
438
|
- lib
|
453
439
|
required_ruby_version: !ruby/object:Gem::Requirement
|
454
|
-
none: false
|
455
440
|
requirements:
|
456
|
-
- -
|
441
|
+
- - ">="
|
457
442
|
- !ruby/object:Gem::Version
|
458
443
|
version: 1.9.3
|
459
444
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
460
|
-
none: false
|
461
445
|
requirements:
|
462
|
-
- -
|
446
|
+
- - ">="
|
463
447
|
- !ruby/object:Gem::Version
|
464
448
|
version: '0'
|
465
449
|
requirements: []
|
466
450
|
rubyforge_project:
|
467
|
-
rubygems_version:
|
451
|
+
rubygems_version: 2.2.2
|
468
452
|
signing_key:
|
469
|
-
specification_version:
|
453
|
+
specification_version: 4
|
470
454
|
summary: Audit the OSS licenses of your application's dependencies.
|
471
455
|
test_files:
|
472
456
|
- features/cli.feature
|
Binary file
|
data/files/report_breakdown.png
DELETED
Binary file
|