license_finder 1.0.1 → 1.1.0
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 +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
|