license_finder 5.10.2 → 5.11.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -1
- data/CHANGELOG.md +10 -0
- data/Dockerfile +5 -3
- data/README.md +18 -4
- data/VERSION +1 -1
- data/ci/pipelines/release.yml.erb +1 -0
- data/lib/license_finder/cli/base.rb +1 -0
- data/lib/license_finder/cli/main.rb +17 -5
- data/lib/license_finder/configuration.rb +4 -0
- data/lib/license_finder/core.rb +1 -0
- data/lib/license_finder/license/definitions.rb +22 -2
- data/lib/license_finder/license/templates/CDDL1.txt +131 -0
- data/lib/license_finder/package_manager.rb +14 -10
- data/lib/license_finder/package_managers/bower.rb +1 -1
- data/lib/license_finder/package_managers/bundler.rb +1 -1
- data/lib/license_finder/package_managers/cargo.rb +1 -1
- data/lib/license_finder/package_managers/composer.rb +2 -2
- data/lib/license_finder/package_managers/dep.rb +1 -1
- data/lib/license_finder/package_managers/dotnet.rb +2 -2
- data/lib/license_finder/package_managers/glide.rb +1 -1
- data/lib/license_finder/package_managers/go_dep.rb +4 -2
- data/lib/license_finder/package_managers/go_modules.rb +3 -3
- data/lib/license_finder/package_managers/go_workspace.rb +3 -3
- data/lib/license_finder/package_managers/govendor.rb +1 -1
- data/lib/license_finder/package_managers/gradle.rb +13 -0
- data/lib/license_finder/package_managers/gvt.rb +1 -1
- data/lib/license_finder/package_managers/maven.rb +14 -0
- data/lib/license_finder/package_managers/mix.rb +1 -1
- data/lib/license_finder/package_managers/npm.rb +2 -2
- data/lib/license_finder/package_managers/nuget.rb +2 -2
- data/lib/license_finder/package_managers/pip.rb +11 -5
- data/lib/license_finder/package_managers/trash.rb +4 -4
- data/lib/license_finder/package_managers/yarn.rb +2 -2
- data/lib/license_finder/project_finder.rb +4 -2
- data/lib/license_finder/scanner.rb +17 -0
- data/license_finder.gemspec +5 -5
- metadata +19 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bb820e05deb4a720f7156019cc7e9fb9fceb7a2be5d67e4c9ce456e098962529
|
4
|
+
data.tar.gz: 472d05dd81be8433c61bce7efbb115896db08b53f3faeaed1fe4af62522142c5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f89dfc7f1260cd7df3eb88259a2446ce43c020ab37faed49849cc21c5ddbb9927280b01c06519949b3c892a74c2303e584268dc00a491e864b1fb775cf7728c1
|
7
|
+
data.tar.gz: 06daad53e224d5a5d021d7f877ef3f5ff0c74cb7cfead1f99f4d26e3e8a9aa472f58a1e0d35cfd5b8a21fdc5d645eac476c8e5ca2b05cec9ac0065fee1e14a2b
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
# [5.11.0] / 2019-10-24
|
2
|
+
|
3
|
+
### Fixed
|
4
|
+
* Fix crash in LF for null deps in godep - [aec335e5](https://github.com/pivotal/LicenseFinder/commit/aec335e574b65c1e9927787e88fb95f1296cdd26)
|
5
|
+
|
6
|
+
### Changed
|
7
|
+
* Exclude Gradle subprojects from project roots - [4efea4c8](https://github.com/pivotal/LicenseFinder/commit/4efea4c8892f48c24ed6ec46a4be85cb06dc6672) - Jason Smith
|
8
|
+
* project_roots will skip maven subprojects - [61b88513](https://github.com/pivotal/LicenseFinder/commit/61b885135bd02cf2b5c6be4bc1fba85020d42f6a) - Peter Tran
|
9
|
+
|
1
10
|
# [5.10.2] / 2019-09-03
|
2
11
|
|
3
12
|
### Added
|
@@ -752,3 +761,4 @@ Bugfixes:
|
|
752
761
|
[5.10.0]: https://github.com/pivotal/LicenseFinder/compare/v5.9.2...v5.10.0
|
753
762
|
[5.10.1]: https://github.com/pivotal/LicenseFinder/compare/v5.10.0...v5.10.1
|
754
763
|
[5.10.2]: https://github.com/pivotal/LicenseFinder/compare/v5.10.1...v5.10.2
|
764
|
+
[5.11.0]: https://github.com/pivotal/LicenseFinder/compare/v5.10.2...v5.11.0
|
data/Dockerfile
CHANGED
@@ -2,6 +2,7 @@ FROM ubuntu:xenial
|
|
2
2
|
|
3
3
|
# Versioning
|
4
4
|
ENV PIP_INSTALL_VERSION 19.0.2
|
5
|
+
ENV PIP3_INSTALL_VERSION 8.1.1
|
5
6
|
ENV GO_LANG_VERSION 1.11.5
|
6
7
|
ENV MAVEN_VERSION 3.6.0
|
7
8
|
ENV SBT_VERSION 1.1.1
|
@@ -54,8 +55,9 @@ RUN java -version
|
|
54
55
|
RUN apt-get install -y python rebar
|
55
56
|
|
56
57
|
# install and update python-pip
|
57
|
-
RUN apt-get install -y python-pip && \
|
58
|
-
pip install --upgrade pip==$PIP_INSTALL_VERSION
|
58
|
+
RUN apt-get install -y python-pip python3-pip && \
|
59
|
+
pip install --upgrade pip==$PIP_INSTALL_VERSION && \
|
60
|
+
pip3 install --upgrade pip==$PIP3_INSTALL_VERSION
|
59
61
|
|
60
62
|
# install maven
|
61
63
|
RUN curl -O https://archive.apache.org/dist/maven/maven-3/$MAVEN_VERSION/binaries/apache-maven-$MAVEN_VERSION-bin.tar.gz && \
|
@@ -145,7 +147,7 @@ RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E03280
|
|
145
147
|
RUN wget -q https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb &&\
|
146
148
|
sudo dpkg -i packages-microsoft-prod.deb &&\
|
147
149
|
sudo apt-get update &&\
|
148
|
-
sudo apt-get install -y dotnet-runtime-2.1 dotnet-sdk-2.1
|
150
|
+
sudo apt-get install -y dotnet-runtime-2.1 dotnet-sdk-2.1 dotnet-sdk-2.2 dotnet-sdk-3.0
|
149
151
|
|
150
152
|
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 4F4EA0AAE5267A6C &&\
|
151
153
|
echo "deb http://ppa.launchpad.net/ondrej/php/ubuntu xenial main" | sudo tee /etc/apt/sources.list.d/php.list &&\
|
data/README.md
CHANGED
@@ -30,7 +30,8 @@ report.
|
|
30
30
|
| Project Type | Package Manager | Tested on Version |
|
31
31
|
| ------------ | --------------- | -------:|
|
32
32
|
| Ruby Gems | bundler | 1.16.6 |
|
33
|
-
| Python Eggs |
|
33
|
+
| Python 2.7 Eggs | pip2 | 19.0.2 |
|
34
|
+
| Python 3.5 Eggs | pip3 | 8.1.1 |
|
34
35
|
| Node.js | npm | 6.4.1 |
|
35
36
|
| Bower | bower | 1.8.4 |
|
36
37
|
| Nuget (without license discovery) | nuget | 4.7.1.5393 |
|
@@ -202,7 +203,7 @@ if someone adds an unapproved dependency to the project.
|
|
202
203
|
|
203
204
|
`license_finder` will inform you whenever you have an unapproved dependency.
|
204
205
|
If your business decides this is an acceptable risk, the easiest way to approve
|
205
|
-
the dependency is by running `license_finder
|
206
|
+
the dependency is by running `license_finder approvals add`.
|
206
207
|
|
207
208
|
For example, let's assume you've added the `awesome_gpl_gem`
|
208
209
|
to your Gemfile, which `license_finder` reports is unapproved:
|
@@ -217,16 +218,22 @@ Your business tells you that in this case, it's acceptable to use this
|
|
217
218
|
gem. You now run:
|
218
219
|
|
219
220
|
```sh
|
220
|
-
$ license_finder
|
221
|
+
$ license_finder approvals add awesome_gpl_gem
|
221
222
|
```
|
222
223
|
|
223
224
|
If you rerun `license_finder`, you should no longer see
|
224
225
|
`awesome_gpl_gem` in the output.
|
225
226
|
|
227
|
+
To approve specific version
|
228
|
+
|
229
|
+
```sh
|
230
|
+
$ license_finder approvals add awesome_gpl_gem --version=1.0.0
|
231
|
+
```
|
232
|
+
|
226
233
|
To record who approved the dependency and why:
|
227
234
|
|
228
235
|
```sh
|
229
|
-
$ license_finder
|
236
|
+
$ license_finder approvals add awesome_gpl_gem --who CTO --why "Go ahead"
|
230
237
|
```
|
231
238
|
|
232
239
|
### Whitelisting
|
@@ -280,6 +287,13 @@ xml-simple, 1.1.1, unknown
|
|
280
287
|
You can customize the format of the output in the same way that you customize
|
281
288
|
[output from `report`](#output-from-report).
|
282
289
|
|
290
|
+
### Output from `project_roots`
|
291
|
+
|
292
|
+
The `license_finder project_roots` command will output the current working directory as a string in an array.
|
293
|
+
|
294
|
+
Using the `--recursive` option means the array will include subdirectories that contain a known package manager. With the exception that Gradle and Maven subprojects will not be included.
|
295
|
+
|
296
|
+
|
283
297
|
### Output from `report`
|
284
298
|
|
285
299
|
The `license_finder report` command will output human-readable reports that you
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
5.
|
1
|
+
5.11.0
|
@@ -30,6 +30,7 @@ module LicenseFinder
|
|
30
30
|
class_option :maven_include_groups, desc: 'Whether dependency name should include group id. Only meaningful if used with a Java/maven project. Defaults to false.'
|
31
31
|
class_option :maven_options, desc: 'Maven options to append to command. Defaults to empty.'
|
32
32
|
class_option :pip_requirements_path, desc: 'Path to python requirements file. Defaults to requirements.txt.'
|
33
|
+
class_option :python_version, desc: 'Python version to invoke pip with. Valid versions: 2 or 3. Default: 2'
|
33
34
|
class_option :rebar_command, desc: "Command to use when fetching rebar packages. Only meaningful if used with a Erlang/rebar project. Defaults to 'rebar'."
|
34
35
|
class_option :rebar_deps_dir, desc: "Path to rebar dependencies directory. Only meaningful if used with a Erlang/rebar project. Defaults to 'deps'."
|
35
36
|
class_option :elixir_command, desc: "Command to use when parsing package metadata for Mix. Only meaningful if used with a Mix project (i.e., Elixir or Erlang). Defaults to 'elixir'."
|
@@ -90,7 +91,13 @@ module LicenseFinder
|
|
90
91
|
shared_options
|
91
92
|
def project_roots
|
92
93
|
config.strict_matching = true
|
93
|
-
|
94
|
+
project_path = config.project_path.to_s || Pathname.pwd.to_s
|
95
|
+
paths = aggregate_paths
|
96
|
+
filtered_project_roots = Scanner.remove_subprojects(paths)
|
97
|
+
|
98
|
+
filtered_project_roots << project_path if aggregate_paths.include?(project_path) && !filtered_project_roots.include?(project_path)
|
99
|
+
|
100
|
+
say(filtered_project_roots)
|
94
101
|
end
|
95
102
|
|
96
103
|
desc 'action_items', 'List unapproved dependencies (the default action for `license_finder`)'
|
@@ -174,15 +181,20 @@ module LicenseFinder
|
|
174
181
|
def aggregate_paths
|
175
182
|
check_valid_project_path
|
176
183
|
aggregate_paths = config.aggregate_paths
|
177
|
-
project_path = config.project_path || Pathname.pwd
|
184
|
+
project_path = config.project_path.to_s || Pathname.pwd.to_s
|
178
185
|
aggregate_paths = ProjectFinder.new(project_path, config.strict_matching).find_projects if config.recursive
|
179
|
-
say(aggregate_paths || project_path) if config.strict_matching
|
180
|
-
return aggregate_paths unless aggregate_paths.nil? || aggregate_paths.empty?
|
181
186
|
|
182
|
-
|
187
|
+
if aggregate_paths.nil? || aggregate_paths.empty?
|
188
|
+
[project_path]
|
189
|
+
else
|
190
|
+
aggregate_paths
|
191
|
+
end
|
183
192
|
end
|
184
193
|
|
185
194
|
def save_report(content, file_name)
|
195
|
+
dir = File.dirname(file_name)
|
196
|
+
FileUtils.mkdir_p(dir) unless Dir.exist?(dir)
|
197
|
+
|
186
198
|
File.open(file_name, 'w') do |f|
|
187
199
|
f.write(content)
|
188
200
|
end
|
data/lib/license_finder/core.rb
CHANGED
@@ -99,6 +99,7 @@ module LicenseFinder
|
|
99
99
|
maven_include_groups: config.maven_include_groups,
|
100
100
|
maven_options: config.maven_options,
|
101
101
|
pip_requirements_path: config.pip_requirements_path,
|
102
|
+
python_version: config.python_version,
|
102
103
|
rebar_command: config.rebar_command,
|
103
104
|
rebar_deps_dir: config.rebar_deps_dir,
|
104
105
|
elixir_command: config.elixir_command,
|
@@ -11,6 +11,7 @@ module LicenseFinder
|
|
11
11
|
apache2,
|
12
12
|
bsd,
|
13
13
|
cc01,
|
14
|
+
cddl1,
|
14
15
|
eclipse1,
|
15
16
|
gplv2,
|
16
17
|
gplv3,
|
@@ -87,6 +88,19 @@ module LicenseFinder
|
|
87
88
|
)
|
88
89
|
end
|
89
90
|
|
91
|
+
def cddl1
|
92
|
+
License.new(
|
93
|
+
short_name: 'CDDL1',
|
94
|
+
pretty_name: 'Common Development and Distribution License 1.0',
|
95
|
+
other_names: [
|
96
|
+
'CDDL-1.0',
|
97
|
+
'Common Development and Distribution License (CDDL) v1.0',
|
98
|
+
'COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0'
|
99
|
+
],
|
100
|
+
url: 'https://spdx.org/licenses/CDDL-1.0.html'
|
101
|
+
)
|
102
|
+
end
|
103
|
+
|
90
104
|
def eclipse1
|
91
105
|
License.new(
|
92
106
|
short_name: 'EPL1',
|
@@ -204,6 +218,7 @@ module LicenseFinder
|
|
204
218
|
other_names: [
|
205
219
|
'Modified BSD',
|
206
220
|
'BSD3',
|
221
|
+
'BSD 3',
|
207
222
|
'BSD-3',
|
208
223
|
'3-clause BSD',
|
209
224
|
'BSD-3-Clause',
|
@@ -211,7 +226,8 @@ module LicenseFinder
|
|
211
226
|
'The 3-Clause BSD License',
|
212
227
|
'BSD 3-clause New License',
|
213
228
|
'New BSD License',
|
214
|
-
'BSD New license'
|
229
|
+
'BSD New license',
|
230
|
+
'BSD Licence 3'
|
215
231
|
],
|
216
232
|
url: 'http://opensource.org/licenses/BSD-3-Clause',
|
217
233
|
matcher: matcher
|
@@ -222,7 +238,11 @@ module LicenseFinder
|
|
222
238
|
License.new(
|
223
239
|
short_name: 'Python',
|
224
240
|
pretty_name: 'Python Software Foundation License',
|
225
|
-
other_names: [
|
241
|
+
other_names: [
|
242
|
+
'PSF',
|
243
|
+
'PSFL',
|
244
|
+
'PSF License'
|
245
|
+
],
|
226
246
|
url: 'http://hg.python.org/cpython/raw-file/89ce323357db/LICENSE'
|
227
247
|
)
|
228
248
|
end
|
@@ -0,0 +1,131 @@
|
|
1
|
+
COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
|
2
|
+
|
3
|
+
1. Definitions.
|
4
|
+
|
5
|
+
1.1. "Contributor" means each individual or entity that creates or contributes to the creation of Modifications.
|
6
|
+
|
7
|
+
1.2. "Contributor Version" means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor.
|
8
|
+
|
9
|
+
1.3. "Covered Software" means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof.
|
10
|
+
|
11
|
+
1.4. "Executable" means the Covered Software in any form other than Source Code.
|
12
|
+
|
13
|
+
1.5. "Initial Developer" means the individual or entity that first makes Original Software available under this License.
|
14
|
+
|
15
|
+
1.6. "Larger Work" means a work which combines Covered Software or portions thereof with code not governed by the terms of this License.
|
16
|
+
|
17
|
+
1.7. "License" means this document.
|
18
|
+
|
19
|
+
1.8. "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein.
|
20
|
+
|
21
|
+
1.9. "Modifications" means the Source Code and Executable form of any of the following:
|
22
|
+
|
23
|
+
A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications;
|
24
|
+
|
25
|
+
B. Any new file that contains any part of the Original Software or previous Modification; or
|
26
|
+
|
27
|
+
C. Any new file that is contributed or otherwise made available under the terms of this License.
|
28
|
+
|
29
|
+
1.10. "Original Software" means the Source Code and Executable form of computer software code that is originally released under this License.
|
30
|
+
|
31
|
+
1.11. "Patent Claims" means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor.
|
32
|
+
|
33
|
+
1.12. "Source Code" means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code.
|
34
|
+
|
35
|
+
1.13. "You" (or "Your") means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, "control" means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity.
|
36
|
+
|
37
|
+
2. License Grants.
|
38
|
+
|
39
|
+
2.1. The Initial Developer Grant.
|
40
|
+
|
41
|
+
Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license:
|
42
|
+
|
43
|
+
(a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer, to use, reproduce, modify, display, perform, sublicense and distribute the Original Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and
|
44
|
+
|
45
|
+
(b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof).
|
46
|
+
|
47
|
+
(c) The licenses granted in Sections 2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party under the terms of this License.
|
48
|
+
|
49
|
+
(d) Notwithstanding Section 2.1(b) above, no patent license is granted: (1) for code that You delete from the Original Software, or (2) for infringements caused by: (i) the modification of the Original Software, or (ii) the combination of the Original Software with other software or devices.
|
50
|
+
|
51
|
+
2.2. Contributor Grant.
|
52
|
+
|
53
|
+
Conditioned upon Your compliance with Section 3.1 below and
|
54
|
+
subject to third party intellectual property claims, each
|
55
|
+
Contributor hereby grants You a world-wide, royalty-free,
|
56
|
+
non-exclusive license:
|
57
|
+
|
58
|
+
(a) under intellectual property rights (other than patent or trademark) Licensable by Contributor to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof), either on an unmodified basis, with other Modifications, as Covered Software and/or as part of a Larger Work; and
|
59
|
+
|
60
|
+
(b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: (1) Modifications made by that Contributor (or portions thereof); and (2) the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination).
|
61
|
+
|
62
|
+
(c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first distributes or otherwise makes the Modifications available to a third party.
|
63
|
+
(d) Notwithstanding Section 2.2(b) above, no patent license is granted: (1) for any code that Contributor has deleted from the Contributor Version; (2) for infringements caused by: (i) third party modifications of Contributor Version, or (ii) the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or (3) under Patent Claims infringed by Covered Software in the absence of Modifications made by that Contributor.
|
64
|
+
|
65
|
+
3. Distribution Obligations.
|
66
|
+
|
67
|
+
3.1. Availability of Source Code.
|
68
|
+
|
69
|
+
Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software in Source Code form in a reasonable manner on or through a medium customarily used for software exchange.
|
70
|
+
|
71
|
+
3.2. Modifications.
|
72
|
+
|
73
|
+
The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License.
|
74
|
+
|
75
|
+
3.3. Required Notices.
|
76
|
+
|
77
|
+
You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer.
|
78
|
+
|
79
|
+
3.4. Application of Additional Terms.
|
80
|
+
|
81
|
+
You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients' rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, you may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear that any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer.
|
82
|
+
|
83
|
+
3.5. Distribution of Executable Versions.
|
84
|
+
|
85
|
+
You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable form does not attempt to limit or alter the recipient's rights in the Source Code form from the rights set forth in this License. If You distribute the Covered Software in Executable form under a different license, You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer.
|
86
|
+
|
87
|
+
3.6. Larger Works.
|
88
|
+
|
89
|
+
You may create a Larger Work by combining Covered Software with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Software.
|
90
|
+
|
91
|
+
4. Versions of the License.
|
92
|
+
|
93
|
+
4.1. New Versions.
|
94
|
+
|
95
|
+
Sun Microsystems, Inc. is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License.
|
96
|
+
|
97
|
+
4.2. Effect of New Versions.
|
98
|
+
|
99
|
+
You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. Otherwise, You may also choose to use, distribute or otherwise make the Covered Software available under the terms of any subsequent version of the License published by the license steward.
|
100
|
+
|
101
|
+
4.3. Modified Versions.
|
102
|
+
|
103
|
+
When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a) rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b) otherwise make it clear that the license contains terms which differ from this License.
|
104
|
+
|
105
|
+
5. DISCLAIMER OF WARRANTY.
|
106
|
+
|
107
|
+
COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
|
108
|
+
|
109
|
+
6. TERMINATION.
|
110
|
+
|
111
|
+
6.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive.
|
112
|
+
|
113
|
+
6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as "Participant") alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights granted directly or indirectly to You by such Participant, the Initial Developer (if the Initial Developer is not the Participant) and all Contributors under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively and automatically at the expiration of such 60 day notice period, unless if within such 60 day period You withdraw Your claim with respect to the Participant Software against such Participant either unilaterally or pursuant to a written agreement with Participant.
|
114
|
+
|
115
|
+
6.3. In the event of termination under Sections 6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination.
|
116
|
+
|
117
|
+
7. LIMITATION OF LIABILITY.
|
118
|
+
|
119
|
+
UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
|
120
|
+
|
121
|
+
8. U.S. GOVERNMENT END USERS.
|
122
|
+
|
123
|
+
The Covered Software is a "commercial item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" (as that term is defined at 48 C.F.R. 252.227-7014(a)(1)) and "commercial computer software documentation" as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Software with only those rights set forth herein. This U.S. Government Rights clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or provision that addresses Government rights in computer software under this License.
|
124
|
+
|
125
|
+
9. MISCELLANEOUS.
|
126
|
+
|
127
|
+
This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdiction's conflict-of-law provisions. Any litigation relating to this License shall be subject to the jurisdiction of the courts located in the jurisdiction and venue specified in a notice contained within the Original Software, with the losing party responsible for costs, including, without limitation, court costs and reasonable attorneys' fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License. You agree that You alone are responsible for compliance with the United States export administration regulations (and the export control laws and regulation of any other countries) when You use, distribute or otherwise make available any Covered Software.
|
128
|
+
|
129
|
+
10. RESPONSIBILITY FOR CLAIMS.
|
130
|
+
|
131
|
+
As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability.
|
@@ -40,11 +40,11 @@ module LicenseFinder
|
|
40
40
|
def package_management_command
|
41
41
|
nil
|
42
42
|
end
|
43
|
+
end
|
43
44
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
end
|
45
|
+
# see class description
|
46
|
+
def prepare_command
|
47
|
+
nil
|
48
48
|
end
|
49
49
|
|
50
50
|
def self.command_exists?(command)
|
@@ -71,17 +71,21 @@ module LicenseFinder
|
|
71
71
|
path&.exist?
|
72
72
|
end
|
73
73
|
|
74
|
+
def project_root?
|
75
|
+
active?
|
76
|
+
end
|
77
|
+
|
74
78
|
def detected_package_path
|
75
79
|
possible_package_paths.find(&:exist?)
|
76
80
|
end
|
77
81
|
|
78
82
|
def prepare
|
79
|
-
if
|
80
|
-
stdout, stderr, status = Dir.chdir(project_path) { Cmd.run(
|
83
|
+
if prepare_command
|
84
|
+
stdout, stderr, status = Dir.chdir(project_path) { Cmd.run(prepare_command) }
|
81
85
|
unless status.success?
|
82
86
|
log_errors stderr
|
83
87
|
|
84
|
-
error_message = "Prepare command '#{
|
88
|
+
error_message = "Prepare command '#{prepare_command}' failed\n#{stderr}"
|
85
89
|
|
86
90
|
error_message == error_message.concat("\n#{stdout}\n") if !stdout.nil? && !stdout.empty?
|
87
91
|
|
@@ -115,8 +119,8 @@ module LicenseFinder
|
|
115
119
|
attr_reader :logger, :project_path
|
116
120
|
|
117
121
|
def log_errors(stderr)
|
118
|
-
logger.info
|
119
|
-
logger.info
|
122
|
+
logger.info prepare_command, 'did not succeed.', color: :red
|
123
|
+
logger.info prepare_command, stderr, color: :red
|
120
124
|
log_to_file stderr
|
121
125
|
end
|
122
126
|
|
@@ -128,7 +132,7 @@ module LicenseFinder
|
|
128
132
|
log_file = File.join(@log_directory, "prepare_#{log_file_name || 'errors'}.log")
|
129
133
|
|
130
134
|
File.open(log_file, 'w') do |f|
|
131
|
-
f.write("Prepare command \"#{
|
135
|
+
f.write("Prepare command \"#{prepare_command}\" failed with:\n")
|
132
136
|
f.write("#{contents}\n\n")
|
133
137
|
end
|
134
138
|
end
|
@@ -17,7 +17,7 @@ module LicenseFinder
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def prepare
|
20
|
-
_stdout, stderr, status = Dir.chdir(project_path) { Cmd.run(
|
20
|
+
_stdout, stderr, status = Dir.chdir(project_path) { Cmd.run(prepare_command) }
|
21
21
|
return if status.success?
|
22
22
|
|
23
23
|
log_errors stderr
|
@@ -28,7 +28,7 @@ module LicenseFinder
|
|
28
28
|
'composer'
|
29
29
|
end
|
30
30
|
|
31
|
-
def
|
31
|
+
def prepare_command
|
32
32
|
'composer install'
|
33
33
|
end
|
34
34
|
|
@@ -43,9 +43,12 @@ module LicenseFinder
|
|
43
43
|
|
44
44
|
def packages_from_json(json_string)
|
45
45
|
all_packages = JSON.parse(json_string)['Deps']
|
46
|
-
packages_grouped_by_revision = all_packages.group_by { |package| package['Rev'] }
|
47
46
|
|
47
|
+
return [] unless all_packages
|
48
|
+
|
49
|
+
packages_grouped_by_revision = all_packages.group_by { |package| package['Rev'] }
|
48
50
|
result = []
|
51
|
+
|
49
52
|
packages_grouped_by_revision.each do |_sha, packages_in_group|
|
50
53
|
all_paths_in_group = packages_in_group.map { |p| p['ImportPath'] }
|
51
54
|
common_paths = CommonPathHelper.longest_common_paths(all_paths_in_group)
|
@@ -64,7 +67,6 @@ module LicenseFinder
|
|
64
67
|
@full_version)
|
65
68
|
end
|
66
69
|
end
|
67
|
-
|
68
70
|
result
|
69
71
|
end
|
70
72
|
end
|
@@ -10,10 +10,10 @@ module LicenseFinder
|
|
10
10
|
def takes_priority_over
|
11
11
|
Go15VendorExperiment
|
12
12
|
end
|
13
|
+
end
|
13
14
|
|
14
|
-
|
15
|
-
|
16
|
-
end
|
15
|
+
def prepare_command
|
16
|
+
'GO111MODULE=on go mod tidy && GO111MODULE=on go mod vendor'
|
17
17
|
end
|
18
18
|
|
19
19
|
def active?
|
@@ -24,9 +24,9 @@ module LicenseFinder
|
|
24
24
|
git_modules.map do |submodule|
|
25
25
|
# We are filtering the non-standard packages because the word "net"
|
26
26
|
# seems to be common that can give false positive when filtering the git submodules
|
27
|
-
import_path = go_list_packages.
|
27
|
+
import_path = go_list_packages.find do |gp|
|
28
28
|
submodule.install_path =~ /#{repo_name(gp)}$/
|
29
|
-
end
|
29
|
+
end
|
30
30
|
next unless import_path
|
31
31
|
|
32
32
|
dependency_info = {
|
@@ -68,7 +68,7 @@ module LicenseFinder
|
|
68
68
|
|
69
69
|
def envrc_path
|
70
70
|
p = Pathname.new project_path
|
71
|
-
4.times.reduce([p]) { |memo, _| memo << memo.last.parent }.map { |path| path.join('.envrc') }.
|
71
|
+
4.times.reduce([p]) { |memo, _| memo << memo.last.parent }.map { |path| path.join('.envrc') }.find(&:exist?)
|
72
72
|
end
|
73
73
|
|
74
74
|
def go_list
|
@@ -42,8 +42,21 @@ module LicenseFinder
|
|
42
42
|
File.exist?(File.join(project_path, wrapper)) ? wrapper : gradle
|
43
43
|
end
|
44
44
|
|
45
|
+
def project_root?
|
46
|
+
active? && root_module?
|
47
|
+
end
|
48
|
+
|
45
49
|
private
|
46
50
|
|
51
|
+
def root_module?
|
52
|
+
command = "#{package_management_command} properties | grep 'parent: '"
|
53
|
+
stdout, stderr, status = Dir.chdir(project_path) { Cmd.run(command) }
|
54
|
+
raise "Command '#{command}' failed to execute: #{stderr}" unless status.success?
|
55
|
+
|
56
|
+
root_project_name = stdout.gsub(/\s|parent:|\n/, '')
|
57
|
+
root_project_name == 'null'
|
58
|
+
end
|
59
|
+
|
47
60
|
def detected_package_path
|
48
61
|
alternate_build_file = build_file_from_settings(project_path)
|
49
62
|
return alternate_build_file if alternate_build_file
|
@@ -47,5 +47,19 @@ module LicenseFinder
|
|
47
47
|
def possible_package_paths
|
48
48
|
[project_path.join('pom.xml')]
|
49
49
|
end
|
50
|
+
|
51
|
+
def project_root?
|
52
|
+
active? && root_module?
|
53
|
+
end
|
54
|
+
|
55
|
+
private
|
56
|
+
|
57
|
+
def root_module?
|
58
|
+
command = "#{package_management_command} help:evaluate -Dexpression=project.parent -q -DforceStdout"
|
59
|
+
stdout, stderr, status = Dir.chdir(project_path) { Cmd.run(command) }
|
60
|
+
raise "Command '#{command}' failed to execute: #{stderr}" unless status.success?
|
61
|
+
|
62
|
+
stdout.include?('null object or invalid expression')
|
63
|
+
end
|
50
64
|
end
|
51
65
|
end
|
@@ -13,7 +13,7 @@ module LicenseFinder
|
|
13
13
|
'npm'
|
14
14
|
end
|
15
15
|
|
16
|
-
def
|
16
|
+
def prepare_command
|
17
17
|
'npm install --no-save'
|
18
18
|
end
|
19
19
|
|
@@ -22,7 +22,7 @@ module LicenseFinder
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def prepare
|
25
|
-
prep_cmd = "#{
|
25
|
+
prep_cmd = "#{prepare_command}#{production_flag}"
|
26
26
|
_stdout, stderr, status = Dir.chdir(project_path) { Cmd.run(prep_cmd) }
|
27
27
|
|
28
28
|
return if status.success?
|
@@ -77,8 +77,8 @@ module LicenseFinder
|
|
77
77
|
'mono /usr/local/bin/nuget.exe'
|
78
78
|
end
|
79
79
|
|
80
|
-
def
|
81
|
-
"#{package_management_command} restore"
|
80
|
+
def prepare_command
|
81
|
+
"#{Nuget.package_management_command} restore"
|
82
82
|
end
|
83
83
|
|
84
84
|
def self.installed?(logger = Core.default_logger)
|
@@ -8,6 +8,8 @@ module LicenseFinder
|
|
8
8
|
def initialize(options = {})
|
9
9
|
super
|
10
10
|
@requirements_path = options[:pip_requirements_path] || Pathname('requirements.txt')
|
11
|
+
@python_version = options[:python_version] || '2'
|
12
|
+
raise "Invalid python version \'#{@python_version}\'. Valid versions are '2' or '3'." unless %w[2 3].include?(@python_version)
|
11
13
|
end
|
12
14
|
|
13
15
|
def current_packages
|
@@ -23,16 +25,20 @@ module LicenseFinder
|
|
23
25
|
end
|
24
26
|
end
|
25
27
|
|
28
|
+
# Used to detect if installed, but this is a static method and the options aren't passed
|
29
|
+
# so we don't know which python version was specified. Will fail later if the expected version
|
30
|
+
# isn't installed. The Dockerfile now installs both versions so using the image is safe.
|
31
|
+
# TODO: Refactor PackageManager.installed?() to pass in the options?
|
26
32
|
def self.package_management_command
|
27
|
-
'
|
33
|
+
'pip2'
|
28
34
|
end
|
29
35
|
|
30
|
-
def
|
31
|
-
|
36
|
+
def prepare_command
|
37
|
+
"pip#{@python_version} install"
|
32
38
|
end
|
33
39
|
|
34
40
|
def prepare
|
35
|
-
prep_cmd = "#{
|
41
|
+
prep_cmd = "#{prepare_command} -r #{@requirements_path}"
|
36
42
|
_stdout, stderr, status = Dir.chdir(project_path) { Cmd.run(prep_cmd) }
|
37
43
|
return if status.success?
|
38
44
|
|
@@ -51,7 +57,7 @@ module LicenseFinder
|
|
51
57
|
private
|
52
58
|
|
53
59
|
def pip_output
|
54
|
-
output =
|
60
|
+
output = `python#{@python_version} #{LicenseFinder::BIN_PATH.join('license_finder_pip.py')} #{detected_package_path}`
|
55
61
|
JSON(output).map do |package|
|
56
62
|
package.values_at('name', 'version', 'dependencies', 'location')
|
57
63
|
end
|
@@ -7,15 +7,15 @@ module LicenseFinder
|
|
7
7
|
'trash'
|
8
8
|
end
|
9
9
|
|
10
|
-
def prepare_command
|
11
|
-
'trash'
|
12
|
-
end
|
13
|
-
|
14
10
|
def takes_priority_over
|
15
11
|
Go15VendorExperiment
|
16
12
|
end
|
17
13
|
end
|
18
14
|
|
15
|
+
def prepare_command
|
16
|
+
'trash'
|
17
|
+
end
|
18
|
+
|
19
19
|
def possible_package_paths
|
20
20
|
[project_path.join('vendor.conf')]
|
21
21
|
end
|
@@ -39,7 +39,7 @@ module LicenseFinder
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def prepare
|
42
|
-
prep_cmd = "#{
|
42
|
+
prep_cmd = "#{prepare_command}#{production_flag}"
|
43
43
|
_stdout, stderr, status = Dir.chdir(project_path) { Cmd.run(prep_cmd) }
|
44
44
|
return if status.success?
|
45
45
|
|
@@ -55,7 +55,7 @@ module LicenseFinder
|
|
55
55
|
'yarn'
|
56
56
|
end
|
57
57
|
|
58
|
-
def
|
58
|
+
def prepare_command
|
59
59
|
'yarn install --ignore-engines'
|
60
60
|
end
|
61
61
|
|
@@ -43,9 +43,11 @@ module LicenseFinder
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def active_project?(project_path)
|
46
|
-
active_project = @package_managers.map do |
|
47
|
-
pm.new(project_path: project_path, strict_matching: @strict_matching)
|
46
|
+
active_project = @package_managers.map do |pm_class|
|
47
|
+
pm = pm_class.new(project_path: project_path, strict_matching: @strict_matching)
|
48
|
+
pm.active?
|
48
49
|
end
|
50
|
+
|
49
51
|
active_project.include?(true)
|
50
52
|
end
|
51
53
|
|
@@ -5,6 +5,23 @@ module LicenseFinder
|
|
5
5
|
PACKAGE_MANAGERS = [GoModules, GoDep, GoWorkspace, Go15VendorExperiment, Glide, Gvt, Govendor, Trash, Dep, Bundler, NPM, Pip,
|
6
6
|
Yarn, Bower, Maven, Gradle, CocoaPods, Rebar, Nuget, Carthage, Mix, Conan, Sbt, Cargo, Dotnet, Composer].freeze
|
7
7
|
|
8
|
+
class << self
|
9
|
+
def remove_subprojects(paths)
|
10
|
+
paths.reject { |path| subproject?(Pathname(path)) }
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def subproject?(path)
|
16
|
+
subproject = true
|
17
|
+
PACKAGE_MANAGERS.each do |package_manager_class|
|
18
|
+
package_manager = package_manager_class.new(project_path: path)
|
19
|
+
subproject &&= !package_manager.project_root?
|
20
|
+
end
|
21
|
+
subproject
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
8
25
|
def initialize(config = { project_path: Pathname.new('') })
|
9
26
|
@config = config
|
10
27
|
@project_path = @config[:project_path]
|
data/license_finder.gemspec
CHANGED
@@ -44,23 +44,23 @@ Gem::Specification.new do |s|
|
|
44
44
|
s.license = 'MIT'
|
45
45
|
|
46
46
|
s.add_dependency 'bundler'
|
47
|
-
s.add_dependency 'rubyzip'
|
47
|
+
s.add_dependency 'rubyzip', '>=1', '<3'
|
48
48
|
s.add_dependency 'thor'
|
49
49
|
s.add_dependency 'toml', '0.2.0'
|
50
50
|
s.add_dependency 'with_env', '1.1.0'
|
51
51
|
s.add_dependency 'xml-simple'
|
52
52
|
|
53
|
-
s.add_development_dependency 'addressable', '2.
|
53
|
+
s.add_development_dependency 'addressable', '2.7.0'
|
54
54
|
s.add_development_dependency 'capybara', '~> 3.15.0'
|
55
55
|
s.add_development_dependency 'cocoapods', '>= 1.0.0' if RUBY_PLATFORM =~ /darwin/
|
56
56
|
s.add_development_dependency 'fakefs', '~> 0.20.0'
|
57
|
-
s.add_development_dependency 'mime-types', '3.
|
57
|
+
s.add_development_dependency 'mime-types', '3.3'
|
58
58
|
s.add_development_dependency 'pry'
|
59
59
|
s.add_development_dependency 'rake'
|
60
60
|
s.add_development_dependency 'rspec', '~> 3'
|
61
61
|
s.add_development_dependency 'rspec-its'
|
62
|
-
s.add_development_dependency 'rubocop', '~> 0.
|
63
|
-
s.add_development_dependency 'rubocop-performance', '~> 1.
|
62
|
+
s.add_development_dependency 'rubocop', '~> 0.75.0'
|
63
|
+
s.add_development_dependency 'rubocop-performance', '~> 1.5.0'
|
64
64
|
s.add_development_dependency 'webmock', '~> 3.5'
|
65
65
|
|
66
66
|
s.add_development_dependency 'rack', '> 1.6'
|
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: 5.
|
4
|
+
version: 5.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Collins
|
@@ -27,7 +27,7 @@ authors:
|
|
27
27
|
autorequire:
|
28
28
|
bindir: bin
|
29
29
|
cert_chain: []
|
30
|
-
date: 2019-
|
30
|
+
date: 2019-10-24 00:00:00.000000000 Z
|
31
31
|
dependencies:
|
32
32
|
- !ruby/object:Gem::Dependency
|
33
33
|
name: bundler
|
@@ -49,14 +49,20 @@ dependencies:
|
|
49
49
|
requirements:
|
50
50
|
- - ">="
|
51
51
|
- !ruby/object:Gem::Version
|
52
|
-
version: '
|
52
|
+
version: '1'
|
53
|
+
- - "<"
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '3'
|
53
56
|
type: :runtime
|
54
57
|
prerelease: false
|
55
58
|
version_requirements: !ruby/object:Gem::Requirement
|
56
59
|
requirements:
|
57
60
|
- - ">="
|
58
61
|
- !ruby/object:Gem::Version
|
59
|
-
version: '
|
62
|
+
version: '1'
|
63
|
+
- - "<"
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '3'
|
60
66
|
- !ruby/object:Gem::Dependency
|
61
67
|
name: thor
|
62
68
|
requirement: !ruby/object:Gem::Requirement
|
@@ -119,14 +125,14 @@ dependencies:
|
|
119
125
|
requirements:
|
120
126
|
- - '='
|
121
127
|
- !ruby/object:Gem::Version
|
122
|
-
version: 2.
|
128
|
+
version: 2.7.0
|
123
129
|
type: :development
|
124
130
|
prerelease: false
|
125
131
|
version_requirements: !ruby/object:Gem::Requirement
|
126
132
|
requirements:
|
127
133
|
- - '='
|
128
134
|
- !ruby/object:Gem::Version
|
129
|
-
version: 2.
|
135
|
+
version: 2.7.0
|
130
136
|
- !ruby/object:Gem::Dependency
|
131
137
|
name: capybara
|
132
138
|
requirement: !ruby/object:Gem::Requirement
|
@@ -161,14 +167,14 @@ dependencies:
|
|
161
167
|
requirements:
|
162
168
|
- - '='
|
163
169
|
- !ruby/object:Gem::Version
|
164
|
-
version: 3.
|
170
|
+
version: '3.3'
|
165
171
|
type: :development
|
166
172
|
prerelease: false
|
167
173
|
version_requirements: !ruby/object:Gem::Requirement
|
168
174
|
requirements:
|
169
175
|
- - '='
|
170
176
|
- !ruby/object:Gem::Version
|
171
|
-
version: 3.
|
177
|
+
version: '3.3'
|
172
178
|
- !ruby/object:Gem::Dependency
|
173
179
|
name: pry
|
174
180
|
requirement: !ruby/object:Gem::Requirement
|
@@ -231,28 +237,28 @@ dependencies:
|
|
231
237
|
requirements:
|
232
238
|
- - "~>"
|
233
239
|
- !ruby/object:Gem::Version
|
234
|
-
version: 0.
|
240
|
+
version: 0.75.0
|
235
241
|
type: :development
|
236
242
|
prerelease: false
|
237
243
|
version_requirements: !ruby/object:Gem::Requirement
|
238
244
|
requirements:
|
239
245
|
- - "~>"
|
240
246
|
- !ruby/object:Gem::Version
|
241
|
-
version: 0.
|
247
|
+
version: 0.75.0
|
242
248
|
- !ruby/object:Gem::Dependency
|
243
249
|
name: rubocop-performance
|
244
250
|
requirement: !ruby/object:Gem::Requirement
|
245
251
|
requirements:
|
246
252
|
- - "~>"
|
247
253
|
- !ruby/object:Gem::Version
|
248
|
-
version: 1.
|
254
|
+
version: 1.5.0
|
249
255
|
type: :development
|
250
256
|
prerelease: false
|
251
257
|
version_requirements: !ruby/object:Gem::Requirement
|
252
258
|
requirements:
|
253
259
|
- - "~>"
|
254
260
|
- !ruby/object:Gem::Version
|
255
|
-
version: 1.
|
261
|
+
version: 1.5.0
|
256
262
|
- !ruby/object:Gem::Dependency
|
257
263
|
name: webmock
|
258
264
|
requirement: !ruby/object:Gem::Requirement
|
@@ -370,6 +376,7 @@ files:
|
|
370
376
|
- lib/license_finder/license/templates/Apache2.txt
|
371
377
|
- lib/license_finder/license/templates/BSD.txt
|
372
378
|
- lib/license_finder/license/templates/CC01.txt
|
379
|
+
- lib/license_finder/license/templates/CDDL1.txt
|
373
380
|
- lib/license_finder/license/templates/EPL1.txt
|
374
381
|
- lib/license_finder/license/templates/GPLv2.txt
|
375
382
|
- lib/license_finder/license/templates/GPLv3.txt
|