licensee 9.17.0 → 9.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fcfd6caf41091c1b39ac120a61729786b14cce5e814f6d5fdcb46705c53ab0b6
4
- data.tar.gz: 8d8d4d6b4beb0062ab28ee47171cc30009c2713aeddccd789c493b82b98db2fd
3
+ metadata.gz: 224c5413c75e78cad466f9d41b8a18a8b0a7ddf348740521ed37dbea4e25e674
4
+ data.tar.gz: f73bde77074c0e4feff4190551effbaebd685abf539b944ed0509231090fe8be
5
5
  SHA512:
6
- metadata.gz: 57286ce86923c9dd5aeb47f3f825667040034459ae43744a50c5085a629f02b4ffad76a6ce6a28d86c5aad25d4776fceec13e4f9a0bde8aa94505b83a62868e2
7
- data.tar.gz: 3f452acd71edba99d0043352900e3e88cd9009a6cb64dfacd184b73ffcfa408b4ec0166a5fc1f064593afd166e7ad064de3bd54c4803ded33419e09ec547fea0
6
+ metadata.gz: 75680afe6a50966f190c3748130cfb72b4b4d68a846aec482405e14756a9d1211754b1a94328e79f38619dc3ee3c1999490b9cab157fc7b76b8cc03661316a7b
7
+ data.tar.gz: 3622c24de4f843dd0f59f37a3db30c8a9e6feba68644f7dce4168adb7a304f97175a41595c70c789acdd4e2166bfa3eb6547b485ce7e0a476719457530652d54
@@ -54,7 +54,7 @@ module Licensee
54
54
  # Backward compatibalize `#["spdx-id"]` calls to avoid a breaking change
55
55
  def [](key)
56
56
  key = 'spdx_id' if key == 'spdx-id'
57
- super(key)
57
+ super
58
58
  end
59
59
 
60
60
  def source
@@ -9,21 +9,24 @@ module Licensee
9
9
  PREFERRED_EXT = %w[md markdown txt html].freeze
10
10
  PREFERRED_EXT_REGEX = /\.#{Regexp.union(PREFERRED_EXT)}\z/
11
11
 
12
- # Regex to match any extension except .spdx or .header
13
- LICENSE_EXT_REGEX = %r{\.(?!spdx|header)[^./]+\z}i
12
+ # Regex to match any extension and periods in version numbers except .spdx or .header
13
+ LICENSE_EXT_REGEX = %r{\.(?!spdx|header)([^./]|\.\d)+\z}i
14
14
 
15
- # Regex to match any extension except a few unlikely as license
15
+ # Regex to match any extension and periods in version numbers except a few unlikely as license
16
16
  # texts with complex filenames
17
- OTHER_EXT_REGEX = %r{\.(?!xml|go|gemspec)[^./]+\z}i
17
+ OTHER_EXT_REGEX = %r{\.(?!xml|go|gemspec)([^./]|\.\d)+\z}i
18
18
 
19
- # Regex to match any extension
20
- ANY_EXT_REGEX = %r{\.[^./]+\z}i
19
+ # Regex to match any extension and periods in version numbers
20
+ ANY_EXT_REGEX = %r{\.([^./]|\.\d)+\z}i
21
21
 
22
22
  # Regex to match, LICENSE, LICENCE, unlicense, etc.
23
23
  LICENSE_REGEX = /(un)?licen[sc]e/i
24
24
 
25
- # Regex to match COPYING, COPYRIGHT, etc.
26
- COPYING_REGEX = /copy(ing|right)/i
25
+ # Regex to match COPYING
26
+ COPYING_REGEX = /copying/i
27
+
28
+ # Regex to match COPYRIGHT
29
+ COPYRIGHT_REGEX = /copyright/i
27
30
 
28
31
  # Regex to match OFL.
29
32
  OFL_REGEX = /ofl/i
@@ -46,8 +49,12 @@ module Licensee
46
49
  /\A#{OFL_REGEX}#{PREFERRED_EXT_REGEX}/ => 0.50, # OFL.md
47
50
  /\A#{OFL_REGEX}#{OTHER_EXT_REGEX}/ => 0.45, # OFL.textile
48
51
  /\A#{OFL_REGEX}\z/ => 0.40, # OFL
49
- /\A#{PATENTS_REGEX}\z/ => 0.35, # PATENTS
50
- /\A#{PATENTS_REGEX}#{OTHER_EXT_REGEX}\z/ => 0.30, # PATENTS.txt
52
+ /\A#{COPYRIGHT_REGEX}\z/ => 0.35, # COPYRIGHT
53
+ /\A#{COPYRIGHT_REGEX}#{PREFERRED_EXT_REGEX}\z/ => 0.30, # COPYRIGHT.txt
54
+ /\A#{COPYRIGHT_REGEX}#{OTHER_EXT_REGEX}\z/ => 0.25, # COPYRIGHT.textile
55
+ /\A#{COPYRIGHT_REGEX}[-_][^.]*#{OTHER_EXT_REGEX}?\z/ => 0.20, # COPYRIGHT-MIT
56
+ /\A#{PATENTS_REGEX}\z/ => 0.15, # PATENTS
57
+ /\A#{PATENTS_REGEX}#{OTHER_EXT_REGEX}\z/ => 0.10, # PATENTS.txt
51
58
  // => 0.00 # Catch all
52
59
  }.freeze
53
60
 
@@ -75,7 +82,7 @@ module Licensee
75
82
  end
76
83
 
77
84
  def lgpl?
78
- LicenseFile.lesser_gpl_score(filename) == 1 && license && license.lgpl?
85
+ LicenseFile.lesser_gpl_score(filename) == 1 && license&.lgpl?
79
86
  end
80
87
 
81
88
  def gpl?
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Licensee
4
- VERSION = '9.17.0'
4
+ VERSION = '9.18.0'
5
5
  end
@@ -93,7 +93,7 @@
93
93
  },
94
94
  {
95
95
  "filename": "licensee.gemspec",
96
- "content": "# frozen_string_literal: true\n\nrequire File.expand_path('lib/licensee/version', __dir__)\n\nGem::Specification.new do |gem|\n gem.name = 'licensee'\n gem.version = Licensee::VERSION\n\n gem.summary = 'A Ruby Gem to detect open source project licenses'\n gem.description = <<-DESC\n Licensee automates the process of reading LICENSE files and\n compares their contents to known licenses using a fancy maths.\n DESC\n\n gem.authors = ['Ben Balter']\n gem.email = 'ben.balter@github.com'\n gem.homepage = 'https://github.com/benbalter/licensee'\n gem.license = 'MIT'\n gem.metadata['rubygems_mfa_required'] = 'true'\n\n gem.bindir = 'bin'\n gem.executables << 'licensee'\n\n gem.add_dependency('dotenv', '>= 2', '< 4')\n gem.add_dependency('octokit', '>= 4.20', '< 9.0')\n gem.add_dependency('reverse_markdown', '>= 1', '< 3')\n gem.add_dependency('rugged', '>= 0.24', '<2.0')\n gem.add_dependency('thor', '>= 0.19', '< 2.0')\n\n gem.add_development_dependency('gem-release', '~> 2.0')\n gem.add_development_dependency('mustache', '>= 0.9', '< 2.0')\n gem.add_development_dependency('pry', '~> 0.9')\n gem.add_development_dependency('rspec', '~> 3.5')\n gem.add_development_dependency('rubocop', '~> 1.0')\n gem.add_development_dependency('rubocop-performance', '~> 1.5')\n gem.add_development_dependency('rubocop-rspec', '~> 2.0')\n gem.add_development_dependency('simplecov', '~> 0.16')\n gem.add_development_dependency('webmock', '~> 3.1')\n\n gem.required_ruby_version = '>= 3.0'\n\n # ensure the gem is built out of versioned files\n gem.files = Dir[\n '{bin,lib,man,test,vendor,spec}/**/*',\n 'README*', 'LICENSE*'\n ] & `git ls-files -z`.split(\"\\0\")\nend\n",
96
+ "content": "# frozen_string_literal: true\n\nrequire File.expand_path('lib/licensee/version', __dir__)\n\nGem::Specification.new do |gem|\n gem.name = 'licensee'\n gem.version = Licensee::VERSION\n\n gem.summary = 'A Ruby Gem to detect open source project licenses'\n gem.description = <<-DESC\n Licensee automates the process of reading LICENSE files and\n compares their contents to known licenses using a fancy maths.\n DESC\n\n gem.authors = ['Ben Balter']\n gem.email = 'ben.balter@github.com'\n gem.homepage = 'https://github.com/benbalter/licensee'\n gem.license = 'MIT'\n gem.metadata['rubygems_mfa_required'] = 'true'\n\n gem.bindir = 'bin'\n gem.executables << 'licensee'\n\n gem.add_dependency('dotenv', '>= 2', '< 4')\n gem.add_dependency('octokit', '>= 4.20', '< 10.0')\n gem.add_dependency('reverse_markdown', '>= 1', '< 4')\n gem.add_dependency('rugged', '>= 0.24', '<2.0')\n gem.add_dependency('thor', '>= 0.19', '< 2.0')\n\n gem.add_development_dependency('gem-release', '~> 2.0')\n gem.add_development_dependency('mustache', '>= 0.9', '< 2.0')\n gem.add_development_dependency('pry', '~> 0.9')\n gem.add_development_dependency('rspec', '~> 3.5')\n gem.add_development_dependency('rubocop', '~> 1.0')\n gem.add_development_dependency('rubocop-performance', '~> 1.5')\n gem.add_development_dependency('rubocop-rspec', '~> 3.0')\n gem.add_development_dependency('simplecov', '~> 0.16')\n gem.add_development_dependency('webmock', '~> 3.1')\n\n gem.required_ruby_version = '>= 3.0'\n\n # ensure the gem is built out of versioned files\n gem.files = Dir[\n '{bin,lib,man,test,vendor,spec}/**/*',\n 'README*', 'LICENSE*'\n ] & `git ls-files -z`.split(\"\\0\")\nend\n",
97
97
  "content_hash": null,
98
98
  "content_normalized": null,
99
99
  "matcher": {
@@ -261,7 +261,7 @@ RSpec.describe Licensee::ContentHelper do
261
261
  end
262
262
 
263
263
  it 'normalizes http: to https:' do
264
- license = Licensee::License.find('mpl-2.0')
264
+ license = Licensee::License.find('ofl-1.1')
265
265
  expect(license.content).to include('http:')
266
266
  expect(license.content_normalized).not_to include('http:')
267
267
  end
@@ -65,18 +65,18 @@ RSpec.describe Licensee::ProjectFiles::LicenseFile do
65
65
  'LICENSE.md' => 0.95,
66
66
  'license.txt' => 0.95,
67
67
  'COPYING' => 0.90,
68
- 'copyRIGHT' => 0.90,
69
- 'COPYRIGHT.txt' => 0.85,
68
+ 'copyRIGHT' => 0.35,
69
+ 'COPYRIGHT.txt' => 0.30,
70
70
  'copying.txt' => 0.85,
71
+ 'LICENSE.MPL-2.0' => 0.80,
71
72
  'LICENSE.php' => 0.80,
72
73
  'LICENCE.docs' => 0.80,
73
74
  'license.xml' => 0.80,
74
75
  'copying.image' => 0.75,
75
- 'COPYRIGHT.go' => 0.75,
76
76
  'LICENSE-MIT' => 0.70,
77
77
  'LICENSE_1_0.txt' => 0.70,
78
78
  'COPYING-GPL' => 0.65,
79
- 'COPYRIGHT-BSD' => 0.65,
79
+ 'COPYRIGHT-BSD' => 0.20,
80
80
  'MIT-LICENSE.txt' => 0.60,
81
81
  'mit-license-foo.md' => 0.60,
82
82
  'OFL.md' => 0.50,
@@ -151,14 +151,6 @@ RSpec.describe Licensee::ProjectFiles::LicenseFile do
151
151
  end
152
152
  end
153
153
  end
154
-
155
- context 'copying regex' do
156
- %w[COPYING copyright].each do |copying|
157
- it "matches #{copying}" do
158
- expect(described_class::COPYING_REGEX).to match(copying)
159
- end
160
- end
161
- end
162
154
  end
163
155
 
164
156
  context 'CC false positives' do
data/spec/spec_helper.rb CHANGED
@@ -131,7 +131,7 @@ RSpec::Matchers.define :be_detected_as do |expected|
131
131
  license_name = expected.meta['spdx-id'] || expected.key
132
132
  similarity = expected.similarity(license_file)
133
133
  content = @license_file.content
134
- msg = +"Expected '#{content}' to match the #{license_name} license"
134
+ msg = "Expected '#{content}' to match the #{license_name} license"
135
135
  msg << " (#{format_percent(similarity)} similarity"
136
136
  msg << "using the #{license_file.matcher} matcher)"
137
137
  end
@@ -141,7 +141,7 @@ RSpec::Matchers.define :be_detected_as do |expected|
141
141
  license_name = expected.meta['spdx-id'] || expected.key
142
142
  similarity = expected.similarity(license_file)
143
143
 
144
- msg = +"Expected the content to *not* match the #{license_name} license"
144
+ msg = "Expected the content to *not* match the #{license_name} license"
145
145
  msg << " (#{format_percent(similarity)} similarity)"
146
146
  end
147
147
 
@@ -393,7 +393,7 @@ Exhibit A - Source Code Form License Notice
393
393
 
394
394
  This Source Code Form is subject to the terms of the Mozilla Public
395
395
  License, v. 2.0. If a copy of the MPL was not distributed with this
396
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
396
+ file, You can obtain one at https://mozilla.org/MPL/2.0/.
397
397
 
398
398
  If it is not possible or desirable to put the notice in a particular
399
399
  file, then You may include the notice in a location (such as a LICENSE
@@ -196,6 +196,8 @@
196
196
 
197
197
  <optional>
198
198
  <p>END OF TERMS AND CONDITIONS</p>
199
+ </optional>
200
+ <optional>
199
201
  <p>APPENDIX: How to apply the Apache License to your work.</p>
200
202
  <p>To apply the Apache License to your work, attach the following boilerplate notice, with the fields
201
203
  enclosed by brackets "[]" replaced with your own identifying information. (Don't
@@ -28,7 +28,7 @@
28
28
  </item>
29
29
  <item>
30
30
  <bullet>3.</bullet>
31
- <alt match="(The\s+name\s+of.+may\s+not)|(Neither\s+the\s+names?\s+of.+nor\s+the\s+names\s+of\s+its\s+contributors\s+may)|(Neither\s+the\s+names?\s+of.+nor\s+the\s+names\s+of\s+their\s+contributors\s+may)|(\s*Neither\s+the\s+name\s+of.+nor\s+the\s+names\s+of\s+its\s+authors\s+and\s+contributors\s+may)|(Neither\s+the\s+name\s+of.+nor\s+the\s+names\s+of\s+(specific\s+)?contributors,?\s+may)|(Neither\s+the\s+name.+nor\s+the\s+names\s+of\s+contributors\s+may)|(The\s+names\s+of\s+its\s+contributors\s+may\s+not)|(The\s+names\s+of\s+any\s+contributors\s+may\s+not)|(The\s+names\s+of\s+the\s+contributors\s+may\s+not)|(None\s+of\s+the\s+names\s+of.+and\s+any\s+contributors\s+may)|(Neither\s+my\s+name.+nor\s+the\s+names\s+of\s+contributors\s+to\s+this\s+code\s+may)" name="organizationClause3">
31
+ <alt match="(The\s+name\s+of.+may\s+not)|(Neither\s+the\s+names?\s+of.+nor\s+the\s+names\s+of\s+its\s+contributors\s+may)|(Neither\s+the\s+names?\s+of.+nor\s+the\s+names\s+of\s+their\s+contributors\s+may)|(\s*Neither\s+the\s+name\s+of.+nor\s+the\s+names\s+of\s+its\s+authors\s+and\s+contributors\s+may)|(Neither\s+the\s+name\s+of.+nor\s+the\s+names\s+of\s+(specific\s+)?contributors,?\s+may)|(Neither\s+the\s+name.+nor\s+the\s+names\s+of\s+contributors\s+may)|(The\s+names\s+of\s+its\s+contributors\s+may\s+not)|(The\s+names\s+of\s+any\s+contributors\s+may\s+not)|(The\s+names\s+of\s+the\s+contributors\s+may\s+not)|(None\s+of\s+the\s+names\s+of.+and\s+any\s+contributors\s+may)|(Neither\s+my\s+name.+nor\s+the\s+names\s+of\s+contributors\s+to\s+this\s+code\s+may)|(Neither\s+name\s+of\s+copyright\s+holders\s+nor\s+the\s+names\s+of\s+its\s+contributors\s+may)" name="organizationClause3">
32
32
  Neither the name of the copyright holder nor the names of its contributors may</alt>
33
33
  be used to endorse or promote products derived from this
34
34
  <alt match="software|work" name="software">software</alt> without specific prior written permission.
@@ -166,6 +166,9 @@
166
166
  The former contains code derived from the library, whereas
167
167
  the latter must be combined with the library in order to run.
168
168
  </p>
169
+ <p>
170
+ GNU LESSER GENERAL PUBLIC LICENSE
171
+ </p>
169
172
  <p>
170
173
  TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
171
174
  </p>
@@ -459,7 +459,7 @@
459
459
  <optional><p>-------------------------------------------</p></optional>
460
460
  <standardLicenseHeader>
461
461
  <p>This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL
462
- was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.</p>
462
+ was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.</p>
463
463
  </standardLicenseHeader>
464
464
  <p>If it is not possible or desirable to put the notice in a particular file, then You may include the
465
465
  notice in a location (such as a LICENSE file in a relevant directory) where a recipient would be
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: licensee
3
3
  version: !ruby/object:Gem::Version
4
- version: 9.17.0
4
+ version: 9.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Balter
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-03-13 00:00:00.000000000 Z
11
+ date: 2024-11-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dotenv
@@ -39,7 +39,7 @@ dependencies:
39
39
  version: '4.20'
40
40
  - - "<"
41
41
  - !ruby/object:Gem::Version
42
- version: '9.0'
42
+ version: '10.0'
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
@@ -49,7 +49,7 @@ dependencies:
49
49
  version: '4.20'
50
50
  - - "<"
51
51
  - !ruby/object:Gem::Version
52
- version: '9.0'
52
+ version: '10.0'
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: reverse_markdown
55
55
  requirement: !ruby/object:Gem::Requirement
@@ -59,7 +59,7 @@ dependencies:
59
59
  version: '1'
60
60
  - - "<"
61
61
  - !ruby/object:Gem::Version
62
- version: '3'
62
+ version: '4'
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
@@ -69,7 +69,7 @@ dependencies:
69
69
  version: '1'
70
70
  - - "<"
71
71
  - !ruby/object:Gem::Version
72
- version: '3'
72
+ version: '4'
73
73
  - !ruby/object:Gem::Dependency
74
74
  name: rugged
75
75
  requirement: !ruby/object:Gem::Requirement
@@ -206,14 +206,14 @@ dependencies:
206
206
  requirements:
207
207
  - - "~>"
208
208
  - !ruby/object:Gem::Version
209
- version: '2.0'
209
+ version: '3.0'
210
210
  type: :development
211
211
  prerelease: false
212
212
  version_requirements: !ruby/object:Gem::Requirement
213
213
  requirements:
214
214
  - - "~>"
215
215
  - !ruby/object:Gem::Version
216
- version: '2.0'
216
+ version: '3.0'
217
217
  - !ruby/object:Gem::Dependency
218
218
  name: simplecov
219
219
  requirement: !ruby/object:Gem::Requirement
@@ -519,7 +519,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
519
519
  - !ruby/object:Gem::Version
520
520
  version: '0'
521
521
  requirements: []
522
- rubygems_version: 3.4.19
522
+ rubygems_version: 3.5.11
523
523
  signing_key:
524
524
  specification_version: 4
525
525
  summary: A Ruby Gem to detect open source project licenses