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.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -1
  3. data/CHANGELOG.md +10 -0
  4. data/Dockerfile +5 -3
  5. data/README.md +18 -4
  6. data/VERSION +1 -1
  7. data/ci/pipelines/release.yml.erb +1 -0
  8. data/lib/license_finder/cli/base.rb +1 -0
  9. data/lib/license_finder/cli/main.rb +17 -5
  10. data/lib/license_finder/configuration.rb +4 -0
  11. data/lib/license_finder/core.rb +1 -0
  12. data/lib/license_finder/license/definitions.rb +22 -2
  13. data/lib/license_finder/license/templates/CDDL1.txt +131 -0
  14. data/lib/license_finder/package_manager.rb +14 -10
  15. data/lib/license_finder/package_managers/bower.rb +1 -1
  16. data/lib/license_finder/package_managers/bundler.rb +1 -1
  17. data/lib/license_finder/package_managers/cargo.rb +1 -1
  18. data/lib/license_finder/package_managers/composer.rb +2 -2
  19. data/lib/license_finder/package_managers/dep.rb +1 -1
  20. data/lib/license_finder/package_managers/dotnet.rb +2 -2
  21. data/lib/license_finder/package_managers/glide.rb +1 -1
  22. data/lib/license_finder/package_managers/go_dep.rb +4 -2
  23. data/lib/license_finder/package_managers/go_modules.rb +3 -3
  24. data/lib/license_finder/package_managers/go_workspace.rb +3 -3
  25. data/lib/license_finder/package_managers/govendor.rb +1 -1
  26. data/lib/license_finder/package_managers/gradle.rb +13 -0
  27. data/lib/license_finder/package_managers/gvt.rb +1 -1
  28. data/lib/license_finder/package_managers/maven.rb +14 -0
  29. data/lib/license_finder/package_managers/mix.rb +1 -1
  30. data/lib/license_finder/package_managers/npm.rb +2 -2
  31. data/lib/license_finder/package_managers/nuget.rb +2 -2
  32. data/lib/license_finder/package_managers/pip.rb +11 -5
  33. data/lib/license_finder/package_managers/trash.rb +4 -4
  34. data/lib/license_finder/package_managers/yarn.rb +2 -2
  35. data/lib/license_finder/project_finder.rb +4 -2
  36. data/lib/license_finder/scanner.rb +17 -0
  37. data/license_finder.gemspec +5 -5
  38. metadata +19 -12
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 59d6452a94207f0ff914041b84298a312d6b233a48a11a9e2c943ab335a42f3c
4
- data.tar.gz: 9b70ac7230c7463b2078e708e9232fe336905187ce80c02f3a06def4fbe1dc6e
3
+ metadata.gz: bb820e05deb4a720f7156019cc7e9fb9fceb7a2be5d67e4c9ce456e098962529
4
+ data.tar.gz: 472d05dd81be8433c61bce7efbb115896db08b53f3faeaed1fe4af62522142c5
5
5
  SHA512:
6
- metadata.gz: 88d00ba582fe3dd99b161e28b907e7e79f3401e781dbbd1d9fbda032721095003ec5c3b12b211da53bae6654aca688e489ae716b5d5c41c72e82e505edaecc36
7
- data.tar.gz: 3a779bc0ae2243a07deb9c32c075ce6af8105f6c59d87a56d7159850b8c740b98238556b950ff52dc46a4ef0bcf5e037bf77f6ddce622914c29bcf323f44c388
6
+ metadata.gz: f89dfc7f1260cd7df3eb88259a2446ce43c020ab37faed49849cc21c5ddbb9927280b01c06519949b3c892a74c2303e584268dc00a491e864b1fb775cf7728c1
7
+ data.tar.gz: 06daad53e224d5a5d021d7f877ef3f5ff0c74cb7cfead1f99f4d26e3e8a9aa472f58a1e0d35cfd5b8a21fdc5d645eac476c8e5ca2b05cec9ac0065fee1e14a2b
data/.gitignore CHANGED
@@ -1,6 +1,6 @@
1
1
  .bundle
2
2
  .gradle/
3
- .idea/*
3
+ .idea/
4
4
  .pairs
5
5
  .rvmrc
6
6
  Gemfile.lock
@@ -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 | pip | 19.0.2 |
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 approval add`.
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 approval add awesome_gpl_gem
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 approval add awesome_gpl_gem --who CTO --why "Go ahead"
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.10.2
1
+ 5.11.0
@@ -63,6 +63,7 @@ resources:
63
63
 
64
64
  - name: lf-release
65
65
  type: github-release
66
+ check_every: 24h
66
67
  source:
67
68
  owner: pivotal
68
69
  repository: LicenseFinder
@@ -38,6 +38,7 @@ module LicenseFinder
38
38
  :maven_include_groups,
39
39
  :maven_options,
40
40
  :pip_requirements_path,
41
+ :python_version,
41
42
  :rebar_command,
42
43
  :rebar_deps_dir,
43
44
  :elixir_command,
@@ -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
- aggregate_paths
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
- [config.project_path] unless config.project_path.nil?
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
@@ -93,6 +93,10 @@ module LicenseFinder
93
93
  get(:pip_requirements_path)
94
94
  end
95
95
 
96
+ def python_version
97
+ get(:python_version)
98
+ end
99
+
96
100
  def rebar_command
97
101
  get(:rebar_command)
98
102
  end
@@ -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: ['PSF'],
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
- # see class description
45
- def prepare_command
46
- nil
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 self.class.prepare_command
80
- stdout, stderr, status = Dir.chdir(project_path) { Cmd.run(self.class.prepare_command) }
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 '#{self.class.prepare_command}' failed\n#{stderr}"
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 self.class.prepare_command, 'did not succeed.', color: :red
119
- logger.info self.class.prepare_command, stderr, color: :red
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 \"#{self.class.prepare_command}\" failed with:\n")
135
+ f.write("Prepare command \"#{prepare_command}\" failed with:\n")
132
136
  f.write("#{contents}\n\n")
133
137
  end
134
138
  end
@@ -14,7 +14,7 @@ module LicenseFinder
14
14
  'bower'
15
15
  end
16
16
 
17
- def self.prepare_command
17
+ def prepare_command
18
18
  'bower install'
19
19
  end
20
20
 
@@ -23,7 +23,7 @@ module LicenseFinder
23
23
  'bundle'
24
24
  end
25
25
 
26
- def self.prepare_command
26
+ def prepare_command
27
27
  'bundle install'
28
28
  end
29
29
 
@@ -14,7 +14,7 @@ module LicenseFinder
14
14
  'cargo'
15
15
  end
16
16
 
17
- def self.prepare_command
17
+ def prepare_command
18
18
  'cargo fetch'
19
19
  end
20
20
 
@@ -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(Composer.prepare_command) }
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 self.prepare_command
31
+ def prepare_command
32
32
  'composer install'
33
33
  end
34
34
 
@@ -27,7 +27,7 @@ module LicenseFinder
27
27
  Go15VendorExperiment
28
28
  end
29
29
 
30
- def self.prepare_command
30
+ def prepare_command
31
31
  'dep ensure -vendor-only'
32
32
  end
33
33
 
@@ -75,8 +75,8 @@ module LicenseFinder
75
75
  'dotnet'
76
76
  end
77
77
 
78
- def self.prepare_command
79
- "#{package_management_command} restore"
78
+ def prepare_command
79
+ "#{Dotnet.package_management_command} restore"
80
80
  end
81
81
  end
82
82
  end
@@ -34,7 +34,7 @@ module LicenseFinder
34
34
  'glide'
35
35
  end
36
36
 
37
- def self.prepare_command
37
+ def prepare_command
38
38
  'glide install'
39
39
  end
40
40
  end
@@ -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
- def prepare_command
15
- 'GO111MODULE=on go mod tidy && GO111MODULE=on go mod vendor'
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.select do |gp|
27
+ import_path = go_list_packages.find do |gp|
28
28
  submodule.install_path =~ /#{repo_name(gp)}$/
29
- end.first
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') }.select(&:exist?).first
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
@@ -29,7 +29,7 @@ module LicenseFinder
29
29
  'govendor'
30
30
  end
31
31
 
32
- def self.prepare_command
32
+ def prepare_command
33
33
  'govendor sync'
34
34
  end
35
35
 
@@ -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
@@ -13,7 +13,7 @@ module LicenseFinder
13
13
  'gvt'
14
14
  end
15
15
 
16
- def self.prepare_command
16
+ def prepare_command
17
17
  'gvt restore'
18
18
  end
19
19
 
@@ -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
@@ -34,7 +34,7 @@ module LicenseFinder
34
34
  'mix.lock'
35
35
  end
36
36
 
37
- def self.prepare_command
37
+ def prepare_command
38
38
  'mix deps.get'
39
39
  end
40
40
 
@@ -13,7 +13,7 @@ module LicenseFinder
13
13
  'npm'
14
14
  end
15
15
 
16
- def self.prepare_command
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 = "#{NPM.prepare_command}#{production_flag}"
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 self.prepare_command
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
- 'pip'
33
+ 'pip2'
28
34
  end
29
35
 
30
- def self.prepare_command
31
- 'pip install'
36
+ def prepare_command
37
+ "pip#{@python_version} install"
32
38
  end
33
39
 
34
40
  def prepare
35
- prep_cmd = "#{Pip.prepare_command} -r #{@requirements_path}"
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 = `#{LicenseFinder::BIN_PATH.join('license_finder_pip.py')} #{detected_package_path}`
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 = "#{Yarn.prepare_command}#{production_flag}"
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 self.prepare_command
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 |pm|
47
- pm.new(project_path: project_path, strict_matching: @strict_matching).active?
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]
@@ -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.6.0'
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.2.2'
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.74.0'
63
- s.add_development_dependency 'rubocop-performance', '~> 1.4.0'
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.10.2
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-09-03 00:00:00.000000000 Z
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: '0'
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: '0'
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.6.0
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.6.0
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.2.2
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.2.2
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.74.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.74.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.4.0
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.4.0
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