diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 0000000..aedf081
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,28 @@
+---
+name: Bug report
+about: Create a report to help us improve
+
+---
+
+### Describe the bug
+
+A clear and concise description of what the bug is.
+
+### Steps to reproduce the behavior
+
+1. Go to '...'
+2. Click on '....'
+3. Scroll down to '....'
+4. See error
+
+### Expected behavior
+
+A clear and concise description of what you expected to happen.
+
+### Screenshots
+
+If applicable, add screenshots to help explain your problem.
+
+### Additional context
+
+Add any other context about the problem here.
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
new file mode 100644
index 0000000..7a8d46c
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -0,0 +1,21 @@
+---
+name: Feature request
+about: Suggest an idea for this project
+
+---
+
+### Is your feature request related to a problem? Please describe the problem you're trying to solve.
+
+A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
+
+### Describe the solution you'd like
+
+A clear and concise description of what you want to happen.
+
+### Describe alternatives you've considered
+
+A clear and concise description of any alternative solutions or features you've considered.
+
+### Additional context
+
+Add any other context or screenshots about the feature request here.
diff --git a/.github/config.yml b/.github/config.yml
index 7638192..69ba9db 100644
--- a/.github/config.yml
+++ b/.github/config.yml
@@ -1,6 +1,6 @@
# Behaviorbot config. See https://github.com/behaviorbot/ for more information.
# Note: Please Don't edit this file directly.
-# Edit https://github.com/benbalter/behaviorbot-config instead.
+# Edit https://github.com/benbalter/shared-community-files instead.
# Configuration for update-docs - https://github.com/behaviorbot/update-docs
updateDocsComment: "Thanks for the pull request! If you are making any changes to the user-facing functionality, please be sure to update the documentation in the `README` or `docs/` folder alongside your change. :heart:"
@@ -18,3 +18,6 @@ newPRWelcomeComment: Welcome! Congrats on your first pull request to Licensee. I
# Configuration for first-pr-merge - https://github.com/behaviorbot/first-pr-merge
firstPRMergeComment: "Congrats on getting your first pull request to Licensee merged! Without amazing humans like you submitting pull requests, we couldn’t run this project. You rock! :tada:
If you're interested in tackling another bug or feature, take a look at [the open issues](https://github.com/benbalter/licensee/issues), especially those [labeled `help wanted`](https://github.com/benbalter/licensee/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)."
+
+# Bug workaround
+contact_links: []
diff --git a/.github/no-response.yml b/.github/no-response.yml
index 7193eaa..87344a5 100644
--- a/.github/no-response.yml
+++ b/.github/no-response.yml
@@ -1,4 +1,6 @@
# Configuration for probot-no-response - https://github.com/probot/no-response
+# Note: Please Don't edit this file directly.
+# Edit https://github.com/benbalter/shared-community-files instead.
# Number of days of inactivity before an Issue is closed for lack of response
daysUntilClose: 14
diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml
new file mode 100644
index 0000000..a4dce4c
--- /dev/null
+++ b/.github/release-drafter.yml
@@ -0,0 +1,4 @@
+template: |
+ ## What's Changed
+
+ $CHANGES
diff --git a/.github/settings.yml b/.github/settings.yml
index 4208159..1ab325a 100644
--- a/.github/settings.yml
+++ b/.github/settings.yml
@@ -1,4 +1,6 @@
# Repository settings set via https://github.com/probot/settings
+# Note: Please Don't edit this file directly.
+# Edit https://github.com/benbalter/shared-community-files instead.
repository:
has_issues: true
diff --git a/.github/stale.yml b/.github/stale.yml
index a1aa17e..801709f 100644
--- a/.github/stale.yml
+++ b/.github/stale.yml
@@ -1,4 +1,6 @@
# Configuration for probot-stale - https://github.com/probot/stale
+# Note: Please Don't edit this file directly.
+# Edit https://github.com/benbalter/shared-community-files instead.
# Number of days of inactivity before an Issue or Pull Request becomes stale
daysUntilStale: 60
diff --git a/.rubocop.yml b/.rubocop.yml
index c4a5126..514ab2f 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -17,7 +17,7 @@ Metrics/BlockLength:
Style/Documentation:
Enabled: false
-Lint/EndAlignment:
+Layout/EndAlignment:
EnforcedStyleAlignWith: variable
AutoCorrect: true
@@ -36,6 +36,9 @@ Metrics/AbcSize:
Layout/IndentHeredoc:
Enabled: false
+Layout/ClosingHeredocIndentation:
+ Enabled: false
+
Style/StructInheritance:
Enabled: false
diff --git a/.travis.yml b/.travis.yml
index f6471c1..36f4f88 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,10 +1,8 @@
language: ruby
rvm:
- - 2.1
- - 2.2
- - 2.3.3
- - 2.4.0
- - 2.5.0
+ - 2.3
+ - 2.4
+ - 2.5
script: "script/cibuild"
sudo: false
cache: bundler
diff --git a/bin/licensee b/bin/licensee
index e7c9001..08b4b37 100755
--- a/bin/licensee
+++ b/bin/licensee
@@ -31,7 +31,7 @@ class LicenseeCLI < Thor
end
end
-commands_dir = File.expand_path 'lib/licensee/commands/'
+commands_dir = File.expand_path '../lib/licensee/commands/', __dir__
Dir["#{commands_dir}/*.rb"].each { |c| require(c) }
LicenseeCLI.start(ARGV)
diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md
index dcb4c9a..b945f01 100644
--- a/docs/CONTRIBUTING.md
+++ b/docs/CONTRIBUTING.md
@@ -46,7 +46,6 @@ To check if Licensee itself can properly detect a license, please:
1. Clone the repository locally `git clone https://github.com/benbalter/licensee`
2. `script/bootstrap`
3. `script/git-repo [URL to your repository]`
-4. Alternate to (3) if you know the license you expect, you can ask Licensee to show you how the license file in your repository differs, e.g., if you expected Licensee to be under the ISC License: `bundle exec bin/licensee detect https://github.com/benbalter/licensee --remote --license=isc`
If Licensee cannot detect the license locally, [open an issue](https://github.com/benbalter/licensee/issues/new) and include the output of `script/git-repo`.
diff --git a/docs/README.md b/docs/README.md
index 2af40a5..620f0b7 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -39,6 +39,12 @@ On Windows, the last line needs to include the Ruby interpreter:
bundle exec ruby bin\licensee
+In a Docker Debian Stretch container, minimum dependencies are:
+
+```
+apt-get install -y ruby bundler cmake pkg-config git libssl-dev
+```
+
## Documentation
See [the docs folder](/docs) for more information. You may be interested in:
diff --git a/docs/customizing.md b/docs/customizing.md
index 136e54d..42e6f54 100644
--- a/docs/customizing.md
+++ b/docs/customizing.md
@@ -2,11 +2,11 @@
### Adjusting the confidence threshold
-If you'd like, you can make Licensee less stringent in its comparison, but risk getting false positives as a result. The confidence threshold is an integer between 1 and 100, with the default being 95, meaning that License is at least 95% confident that the file represents the matched license.
+If you'd like, you can make Licensee less stringent in its comparison, but risk getting false positives as a result. The confidence threshold is an integer between 1 and 100, with the default being 98, meaning that License is at least 98% confident that the file represents the matched license.
```ruby
LICENSEE.confidence_threshold
-=> 95
+=> 98
LICENSEE.confidence_threshold = 90
=> 90
diff --git a/lib/licensee.rb b/lib/licensee.rb
index e405fae..0d0edf4 100644
--- a/lib/licensee.rb
+++ b/lib/licensee.rb
@@ -1,7 +1,6 @@
require_relative 'licensee/version'
require 'forwardable'
require 'pathname'
-require 'rugged'
require 'yaml'
module Licensee
diff --git a/lib/licensee/commands/detect.rb b/lib/licensee/commands/detect.rb
index 63225fe..9d0b09c 100644
--- a/lib/licensee/commands/detect.rb
+++ b/lib/licensee/commands/detect.rb
@@ -21,12 +21,12 @@ class LicenseeCLI < Thor
rows = []
rows << if project.license
- ['License:', project.license.name]
- elsif !project.licenses.empty?
- ['Licenses:', project.licenses.map(&:name)]
- else
- ['License:', set_color('None', :red)]
- end
+ ['License:', project.license.spdx_id]
+ elsif !project.licenses.empty?
+ ['Licenses:', project.licenses.map(&:spdx_id)]
+ else
+ ['License:', set_color('None', :red)]
+ end
unless project.matched_files.empty?
rows << ['Matched files:', project.matched_files.map(&:filename).join(', ')]
@@ -51,7 +51,7 @@ class LicenseeCLI < Thor
licenses = licenses_by_similiarity(matched_file)
next if licenses.empty?
- say ' Closest licenses:'
+ say ' Closest non-matching licenses:'
rows = licenses[0...3].map do |license, similarity|
spdx_id = license.meta['spdx-id']
percent = Licensee::ContentHelper.format_percent(similarity)
@@ -77,7 +77,7 @@ class LicenseeCLI < Thor
def humanize(value, type = nil)
case type
when :license
- value.name
+ value.spdx_id
when :matcher
value.class
when :confidence
diff --git a/lib/licensee/content_helper.rb b/lib/licensee/content_helper.rb
index fc9aafc..9a3969b 100644
--- a/lib/licensee/content_helper.rb
+++ b/lib/licensee/content_helper.rb
@@ -82,6 +82,7 @@ module Licensee
string, _partition, _instructions = string.partition(END_OF_TERMS_REGEX)
string = strip_markup(string)
string = normalize_quotes(string)
+ string = normalize_https(string)
strip_whitespace(string)
end
@@ -178,5 +179,9 @@ module Licensee
def normalize_quotes(string)
string.gsub(/\s'([\w -]*?\w)'/, ' "\1"')
end
+
+ def normalize_https(string)
+ string.gsub(/http:/, 'https:')
+ end
end
end
diff --git a/lib/licensee/license.rb b/lib/licensee/license.rb
index d3e63e6..2f2f59a 100644
--- a/lib/licensee/license.rb
+++ b/lib/licensee/license.rb
@@ -117,9 +117,15 @@ module Licensee
@meta ||= LicenseMeta.from_yaml(yaml)
end
+ def spdx_id
+ return meta.spdx_id if meta.spdx_id
+ return 'NOASSERTION' if key == 'other'
+ return 'NONE' if key == 'no-license'
+ end
+
# Returns the human-readable license name
def name
- title ? title : key.capitalize
+ title || spdx_id
end
def name_without_version
diff --git a/lib/licensee/matchers/copyright.rb b/lib/licensee/matchers/copyright.rb
index 9282b65..b6c38f5 100644
--- a/lib/licensee/matchers/copyright.rb
+++ b/lib/licensee/matchers/copyright.rb
@@ -5,7 +5,7 @@ module Licensee
# rubocop:disable Metrics/LineLength
COPYRIGHT_SYMBOLS = Regexp.union([/copyright/i, /\(c\)/i, "\u00A9", "\xC2\xA9"])
- REGEX = /\A\s*#{COPYRIGHT_SYMBOLS}.*$/i
+ REGEX = /\A(\s*#{COPYRIGHT_SYMBOLS}.*$)+/i
# rubocop:enable Metrics/LineLength
def match
diff --git a/lib/licensee/project_files/license_file.rb b/lib/licensee/project_files/license_file.rb
index 0039bdc..c637e7c 100644
--- a/lib/licensee/project_files/license_file.rb
+++ b/lib/licensee/project_files/license_file.rb
@@ -54,6 +54,7 @@ module Licensee
def attribution
@attribution ||= begin
+ return unless copyright? || license.content =~ /\[fullname\]/
matches = Matchers::Copyright::REGEX
.match(content_without_title_and_version)
matches[0] if matches
diff --git a/lib/licensee/project_files/project_file.rb b/lib/licensee/project_files/project_file.rb
index 0243ba2..6cdfc08 100644
--- a/lib/licensee/project_files/project_file.rb
+++ b/lib/licensee/project_files/project_file.rb
@@ -67,7 +67,7 @@ module Licensee
alias path filename
def matched_license
- license.key if license
+ license.spdx_id if license
end
# Is this file a COPYRIGHT file with only a copyright statement?
diff --git a/lib/licensee/projects/git_project.rb b/lib/licensee/projects/git_project.rb
index 53daec8..7300f51 100644
--- a/lib/licensee/projects/git_project.rb
+++ b/lib/licensee/projects/git_project.rb
@@ -5,6 +5,9 @@
# Project files for this project type will contain the following keys:
# :name - the file's path relative to the repo root
# :oid - the file's OID
+
+autoload :Rugged, 'rugged'
+
module Licensee
module Projects
class GitProject < Licensee::Projects::Project
diff --git a/lib/licensee/projects/github_project.rb b/lib/licensee/projects/github_project.rb
index da379fa..6c15bee 100644
--- a/lib/licensee/projects/github_project.rb
+++ b/lib/licensee/projects/github_project.rb
@@ -5,7 +5,7 @@
# Only the root directory of a repository will be scanned because every
# `#load_file(..)` call incurs a separate API request.
-require 'octokit'
+autoload :Octokit, 'octokit'
module Licensee
module Projects
diff --git a/lib/licensee/version.rb b/lib/licensee/version.rb
index 28c7cfc..241f75e 100644
--- a/lib/licensee/version.rb
+++ b/lib/licensee/version.rb
@@ -1,3 +1,3 @@
module Licensee
- VERSION = '9.9.0.beta.2'.freeze
+ VERSION = '9.9.1'.freeze
end
diff --git a/licensee.gemspec b/licensee.gemspec
index 0b27710..33fdcad 100644
--- a/licensee.gemspec
+++ b/licensee.gemspec
@@ -31,7 +31,7 @@ Gem::Specification.new do |gem|
gem.add_development_dependency('rubocop', '~> 0.49')
gem.add_development_dependency('webmock', '~> 3.1')
- gem.required_ruby_version = '>= 2.1'
+ gem.required_ruby_version = '> 2.2'
# ensure the gem is built out of versioned files
gem.files = Dir[
diff --git a/spec/fixtures/detect.json b/spec/fixtures/detect.json
index ca9ec4f..e36d8d4 100644
--- a/spec/fixtures/detect.json
+++ b/spec/fixtures/detect.json
@@ -94,18 +94,18 @@
"name": "exact",
"confidence": 100
},
- "matched_license": "mit"
+ "matched_license": "MIT"
},
{
"filename": "licensee.gemspec",
- "content": "require 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\n gem.bindir = 'bin'\n gem.executables << 'licensee'\n\n gem.add_dependency('dotenv', '~> 2.0')\n gem.add_dependency('octokit', '~> 4.8.0')\n gem.add_dependency('rugged', '~> 0.24')\n gem.add_dependency('thor', '~> 0.19')\n\n gem.add_development_dependency('coveralls', '~> 0.8')\n gem.add_development_dependency('mustache', '>= 0.9', '< 2.0')\n gem.add_development_dependency('pry', '~> 0.9')\n gem.add_development_dependency('rake', '~> 10.3')\n gem.add_development_dependency('rspec', '~> 3.5')\n gem.add_development_dependency('rubocop', '~> 0.49')\n gem.add_development_dependency('webmock', '~> 3.1')\n\n gem.required_ruby_version = '>= 2.1'\n\n # ensure the gem is built out of versioned files\n gem.files = Dir[\n 'Rakefile',\n '{bin,lib,man,test,vendor,spec}/**/*',\n 'README*', 'LICENSE*'\n ] & `git ls-files -z`.split(\"\\0\")\nend\n",
+ "content": "require 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\n gem.bindir = 'bin'\n gem.executables << 'licensee'\n\n gem.add_dependency('dotenv', '~> 2.0')\n gem.add_dependency('octokit', '~> 4.8.0')\n gem.add_dependency('rugged', '~> 0.24')\n gem.add_dependency('thor', '~> 0.19')\n\n gem.add_development_dependency('coveralls', '~> 0.8')\n gem.add_development_dependency('mustache', '>= 0.9', '< 2.0')\n gem.add_development_dependency('pry', '~> 0.9')\n gem.add_development_dependency('rake', '~> 10.3')\n gem.add_development_dependency('rspec', '~> 3.5')\n gem.add_development_dependency('rubocop', '~> 0.49')\n gem.add_development_dependency('webmock', '~> 3.1')\n\n gem.required_ruby_version = '> 2.2'\n\n # ensure the gem is built out of versioned files\n gem.files = Dir[\n 'Rakefile',\n '{bin,lib,man,test,vendor,spec}/**/*',\n 'README*', 'LICENSE*'\n ] & `git ls-files -z`.split(\"\\0\")\nend\n",
"content_hash": null,
"content_normalized": null,
"matcher": {
"name": "gemspec",
"confidence": 90
},
- "matched_license": "mit"
+ "matched_license": "MIT"
}
]
}
diff --git a/spec/licensee/commands/detect_spec.rb b/spec/licensee/commands/detect_spec.rb
index 7eec2f4..9a34e92 100644
--- a/spec/licensee/commands/detect_spec.rb
+++ b/spec/licensee/commands/detect_spec.rb
@@ -13,19 +13,19 @@ RSpec.describe 'detect command' do
let(:hash) { '46cdc03462b9af57968df67b450cc4372ac41f53' }
let(:expected) do
{
- 'License' => 'MIT License',
+ 'License' => 'MIT',
'Matched files' => 'LICENSE.md, licensee.gemspec',
'LICENSE.md' => {
'Content hash' => hash,
'Attribution' => 'Copyright (c) 2014-2017 Ben Balter',
'Confidence' => '100.00%',
'Matcher' => 'Licensee::Matchers::Exact',
- 'License' => 'MIT License'
+ 'License' => 'MIT'
},
'licensee.gemspec' => {
'Confidence' => '90.00%',
'Matcher' => 'Licensee::Matchers::Gemspec',
- 'License' => 'MIT License'
+ 'License' => 'MIT'
}
}
end
diff --git a/spec/licensee/content_helper_spec.rb b/spec/licensee/content_helper_spec.rb
index 68d8ce2..efbe734 100644
--- a/spec/licensee/content_helper_spec.rb
+++ b/spec/licensee/content_helper_spec.rb
@@ -25,7 +25,7 @@ RSpec.describe Licensee::ContentHelper do
This license provided 'as is'. Please respect the contributors' wishes when
implementing the license's "software".
-----------
-LICENSE
+ LICENSE
end
subject { ContentHelperTestHelper.new(content) }
let(:mit) { Licensee::License.find('mit') }
@@ -103,6 +103,12 @@ LICENSE
expect(license.content_normalized).to_not include('* *')
end
+ it 'normalizes http: to https:' do
+ license = Licensee::License.find('mpl-2.0')
+ expect(license.content).to include('http:')
+ expect(license.content_normalized).to_not include('http:')
+ end
+
it 'wraps' do
lines = mit.content_normalized(wrap: 40).split("\n")
expect(lines.first.length).to be <= 40
diff --git a/spec/licensee/license_spec.rb b/spec/licensee/license_spec.rb
index 814db80..216bbfc 100644
--- a/spec/licensee/license_spec.rb
+++ b/spec/licensee/license_spec.rb
@@ -1,6 +1,6 @@
RSpec.describe Licensee::License do
- let(:license_count) { 35 }
- let(:hidden_license_count) { 23 }
+ let(:license_count) { 36 }
+ let(:hidden_license_count) { 24 }
let(:featured_license_count) { 3 }
let(:pseudo_license_count) { 2 }
let(:non_featured_license_count) do
@@ -11,6 +11,7 @@ RSpec.describe Licensee::License do
let(:cc_by) { described_class.find('cc-by-4.0') }
let(:unlicense) { described_class.find('unlicense') }
let(:other) { described_class.find('other') }
+ let(:no_license) { described_class.find('no-license') }
let(:gpl) { described_class.find('gpl-3.0') }
let(:lgpl) { described_class.find('lgpl-3.0') }
let(:content_hash) { '46cdc03462b9af57968df67b450cc4372ac41f53' }
@@ -168,6 +169,11 @@ RSpec.describe Licensee::License do
expect(gpl.spdx_id).to eql('GPL-3.0')
end
+ it 'exposes special SPDX ID for pseudo licenses' do
+ expect(other.spdx_id).to eql('NOASSERTION')
+ expect(no_license.spdx_id).to eql('NONE')
+ end
+
context '#other?' do
it 'knows MIT is not other' do
expect(gpl).to_not be_other
@@ -195,7 +201,7 @@ RSpec.describe Licensee::License do
end
it 'uses the default name when none exists' do
- expect(other.name).to eql('Other')
+ expect(other.name).to eql('NOASSERTION')
end
it 'expoeses the nickname' do
diff --git a/spec/licensee/matchers/copyright_matcher_spec.rb b/spec/licensee/matchers/copyright_matcher_spec.rb
index 886b031..398cf6c 100644
--- a/spec/licensee/matchers/copyright_matcher_spec.rb
+++ b/spec/licensee/matchers/copyright_matcher_spec.rb
@@ -26,7 +26,8 @@ RSpec.describe Licensee::Matchers::Copyright do
'Comma-separated date' => 'Copyright (c) 2003, 2004 Ben Balter',
'Hyphen-separated date' => 'Copyright (c) 2003-2004 Ben Balter',
'ASCII-8BIT encoded' => "Copyright \xC2\xA92015 Ben Balter`",
- 'No year' => 'Copyright Ben Balter'
+ 'No year' => 'Copyright Ben Balter',
+ 'Multiline' => "Copyright Ben Balter\nCopyright Another Entity"
.force_encoding('ASCII-8BIT')
}.each do |description, notice|
context "with a #{description} notice" do
diff --git a/spec/licensee/project_files/license_file_spec.rb b/spec/licensee/project_files/license_file_spec.rb
index c8f3997..27ff3fc 100644
--- a/spec/licensee/project_files/license_file_spec.rb
+++ b/spec/licensee/project_files/license_file_spec.rb
@@ -1,5 +1,6 @@
RSpec.describe Licensee::ProjectFiles::LicenseFile do
let(:filename) { 'LICENSE.txt' }
+ let(:gpl) { Licensee::License.find('gpl-3.0') }
let(:mit) { Licensee::License.find('mit') }
let(:content) { sub_copyright_info(mit) }
let(:content_hash) { '46cdc03462b9af57968df67b450cc4372ac41f53' }
@@ -26,6 +27,23 @@ RSpec.describe Licensee::ProjectFiles::LicenseFile do
end
end
+ context 'with a non-templated license' do
+ let(:content) { sub_copyright_info(gpl) }
+
+ it "doesn't match" do
+ expect(subject.attribution).to be_nil
+ end
+ end
+
+ context 'with a copyright file' do
+ let(:filename) { 'COPYRIGHT' }
+ let(:content) { 'Copyright (C) 2015 Ben Balter' }
+
+ it "doesn't match" do
+ expect(subject.attribution).to eql(content)
+ end
+ end
+
it 'creates the wordset' do
expect(subject.wordset.count).to eql(91)
expect(subject.wordset.first).to eql('permission')
@@ -215,7 +233,6 @@ Creative Commons Attribution-NonCommercial 4.0
end
context 'GPL' do
- let(:gpl) { Licensee::License.find('gpl-3.0') }
let(:content) { sub_copyright_info(gpl) }
it 'knows its GPL' do
diff --git a/spec/licensee/project_files/project_file_spec.rb b/spec/licensee/project_files/project_file_spec.rb
index 60f18b9..6055e4d 100644
--- a/spec/licensee/project_files/project_file_spec.rb
+++ b/spec/licensee/project_files/project_file_spec.rb
@@ -56,7 +56,7 @@ RSpec.describe Licensee::ProjectFiles::ProjectFile do
name: :exact,
confidence: 100
},
- matched_license: 'mit'
+ matched_license: 'MIT'
}
end
diff --git a/spec/licensee_spec.rb b/spec/licensee_spec.rb
index 206ae09..7d72771 100644
--- a/spec/licensee_spec.rb
+++ b/spec/licensee_spec.rb
@@ -2,7 +2,7 @@ RSpec.describe Licensee do
let(:project_path) { fixture_path('mit') }
let(:license_path) { fixture_path('mit/LICENSE.txt') }
let(:mit_license) { Licensee::License.find('mit') }
- let(:hidden_license_count) { 35 }
+ let(:hidden_license_count) { 36 }
it 'exposes licenses' do
expect(described_class.licenses).to be_an(Array)
diff --git a/vendor/choosealicense.com/_data/meta.yml b/vendor/choosealicense.com/_data/meta.yml
index 6e6de7b..a85a46a 100644
--- a/vendor/choosealicense.com/_data/meta.yml
+++ b/vendor/choosealicense.com/_data/meta.yml
@@ -2,11 +2,11 @@
# The available fields are:
- name: title
- description: The license full name specified by http://spdx.org/licenses/
+ description: The license full name specified by https://spdx.org/licenses/
required: true
- name: spdx-id
- description: Short identifier specified by http://spdx.org/licenses/
+ description: Short identifier specified by https://spdx.org/licenses/
required: true
- name: source
@@ -44,7 +44,7 @@
required: false
- name: hidden
- description: Whether the license is neither [popular](https://opensource.org/licenses) nor fills out the [spectrum of licenses](http://choosealicense.com/licenses/) from strongly conditional to unconditional (defaults to true)
+ description: Whether the license is neither [popular](https://opensource.org/licenses) nor fills out the [spectrum of licenses](https://choosealicense.com/licenses/) from strongly conditional to unconditional (defaults to true)
required: false
- name: nickname
diff --git a/vendor/choosealicense.com/_licenses/apache-2.0.txt b/vendor/choosealicense.com/_licenses/apache-2.0.txt
index bcd63fa..dbb2d06 100644
--- a/vendor/choosealicense.com/_licenses/apache-2.0.txt
+++ b/vendor/choosealicense.com/_licenses/apache-2.0.txt
@@ -13,8 +13,8 @@ how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of
note: The Apache Foundation recommends taking the additional step of adding a boilerplate notice to the header of each source file. You can find the notice at the very end of the license in the appendix.
using:
- - Elasticsearch: https://github.com/elastic/elasticsearch/blob/master/LICENSE.txt
- Kubernetes: https://github.com/kubernetes/kubernetes/blob/master/LICENSE
+ - PDF.js: https://github.com/mozilla/pdf.js/blob/master/LICENSE
- Swift: https://github.com/apple/swift/blob/master/LICENSE.txt
permissions:
diff --git a/vendor/choosealicense.com/_licenses/artistic-2.0.txt b/vendor/choosealicense.com/_licenses/artistic-2.0.txt
index 8b84ce1..af0f87d 100644
--- a/vendor/choosealicense.com/_licenses/artistic-2.0.txt
+++ b/vendor/choosealicense.com/_licenses/artistic-2.0.txt
@@ -2,7 +2,7 @@
title: Artistic License 2.0
spdx-id: Artistic-2.0
redirect_from: /licenses/artistic/
-source: http://www.perlfoundation.org/attachment/legal/artistic-2_0.txt
+source: https://spdx.org/licenses/Artistic-2.0.html
description: Heavily favored by the Perl community, the Artistic license requires that modified versions of the software do not prevent users from running the standard version.
diff --git a/vendor/choosealicense.com/_licenses/bsl-1.0.txt b/vendor/choosealicense.com/_licenses/bsl-1.0.txt
index cbc71b2..e2f16bf 100644
--- a/vendor/choosealicense.com/_licenses/bsl-1.0.txt
+++ b/vendor/choosealicense.com/_licenses/bsl-1.0.txt
@@ -7,7 +7,7 @@ description: A simple permissive license only requiring preservation of copyrigh
how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file.
-note: Boost recommends taking the additional step of adding a boilerplate notice to the top of each file. The boilerplate can be found at the [Boost Software License FAQ](http://www.boost.org/users/license.html#FAQ).
+note: Boost recommends taking the additional step of adding a boilerplate notice to the top of each file. The boilerplate can be found at the [Boost Software License FAQ](https://www.boost.org/users/license.html#FAQ).
using:
diff --git a/vendor/choosealicense.com/_licenses/cc-by-4.0.txt b/vendor/choosealicense.com/_licenses/cc-by-4.0.txt
index 35beda5..41b3a2b 100644
--- a/vendor/choosealicense.com/_licenses/cc-by-4.0.txt
+++ b/vendor/choosealicense.com/_licenses/cc-by-4.0.txt
@@ -1,5 +1,5 @@
---
-title: Creative Commons Attribution 4.0
+title: Creative Commons Attribution 4.0 International
spdx-id: CC-BY-4.0
source: https://creativecommons.org/licenses/by/4.0/legalcode.txt
diff --git a/vendor/choosealicense.com/_licenses/cc-by-sa-4.0.txt b/vendor/choosealicense.com/_licenses/cc-by-sa-4.0.txt
index ec3451d..c098290 100644
--- a/vendor/choosealicense.com/_licenses/cc-by-sa-4.0.txt
+++ b/vendor/choosealicense.com/_licenses/cc-by-sa-4.0.txt
@@ -1,5 +1,5 @@
---
-title: Creative Commons Attribution Share Alike 4.0
+title: Creative Commons Attribution Share Alike 4.0 International
spdx-id: CC-BY-SA-4.0
source: https://creativecommons.org/licenses/by-sa/4.0/legalcode.txt
diff --git a/vendor/choosealicense.com/_licenses/eupl-1.2.txt b/vendor/choosealicense.com/_licenses/eupl-1.2.txt
index 550ffe7..1cb6c34 100644
--- a/vendor/choosealicense.com/_licenses/eupl-1.2.txt
+++ b/vendor/choosealicense.com/_licenses/eupl-1.2.txt
@@ -1,7 +1,7 @@
---
title: European Union Public License 1.2
spdx-id: EUPL-1.2
-source: http://eur-lex.europa.eu/legal-content/TXT/?uri=CELEX%3A32017D0863
+source: https://eur-lex.europa.eu/legal-content/TXT/?uri=CELEX%3A32017D0863
description: The European Union Public Licence (EUPL) is a copyleft free/open source software license created on the initiative of and approved by the European Commission in 22 official languages of the European Union.
@@ -127,7 +127,7 @@ limitations thereto.
The grant of the rights mentioned above is subject to some restrictions and
obligations imposed on the Licensee. Those obligations are the following:
-
+
Attribution right: The Licensee shall keep intact all copyright, patent or
trademarks notices and all notices that refer to the Licence and to the
disclaimer of warranties. The Licensee must include a copy of such notices and
diff --git a/vendor/choosealicense.com/_licenses/ncsa.txt b/vendor/choosealicense.com/_licenses/ncsa.txt
index d01cc12..0897884 100644
--- a/vendor/choosealicense.com/_licenses/ncsa.txt
+++ b/vendor/choosealicense.com/_licenses/ncsa.txt
@@ -8,7 +8,7 @@ description: The University of Illinois/NCSA Open Source License, or UIUC licens
how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file. Replace [year] with the current year and [fullname] with the name (or names) of the copyright holders. Replace [project] with the project organization, if any, that sponsors this work.
-using:
+using:
- LLDB: https://github.com/llvm-mirror/lldb/blob/master/LICENSE.TXT
- ROCR-Runtime: https://github.com/RadeonOpenCompute/ROCR-Runtime/blob/master/LICENSE.txt
- RLTK: https://github.com/chriswailes/RLTK/blob/master/LICENSE
@@ -28,37 +28,37 @@ limitations:
---
-University of Illinois/NCSA Open Source License
+University of Illinois/NCSA Open Source License
-Copyright (c) [year] [fullname]. All rights reserved.
+Copyright (c) [year] [fullname]. All rights reserved.
-Developed by: [project]
- [fullname]
+Developed by: [project]
+ [fullname]
[projecturl]
-
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation files
-(the "Software"), to deal with the Software without restriction,
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation files
+(the "Software"), to deal with the Software without restriction,
including without limitation the rights to use, copy, modify, merge,
-publish, distribute, sublicense, and/or sell copies of the Software,
-and to permit persons to whom the Software is furnished to do so,
+publish, distribute, sublicense, and/or sell copies of the Software,
+and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
-* Redistributions of source code must retain the above copyright notice,
+* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimers.
-* Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimers in the
+* Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimers in the
documentation and/or other materials provided with the distribution.
-* Neither the names of [fullname], [project] nor the names of its
+* Neither the names of [fullname], [project] nor the names of its
contributors may be used to endorse or promote products derived from
this Software without specific prior written permission.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH
THE SOFTWARE.
diff --git a/vendor/choosealicense.com/_licenses/osl-3.0.txt b/vendor/choosealicense.com/_licenses/osl-3.0.txt
index d973ace..6e02d23 100644
--- a/vendor/choosealicense.com/_licenses/osl-3.0.txt
+++ b/vendor/choosealicense.com/_licenses/osl-3.0.txt
@@ -7,7 +7,7 @@ description: OSL 3.0 is a copyleft license that does not require reciprocal lice
how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file. Files licensed under OSL 3.0 must also include the notice "Licensed under the Open Software License version 3.0" adjacent to the copyright notice.
-note: OSL 3.0's author has provided an explanation behind the creation of the license.
+note: OSL 3.0's author has provided an explanation behind the creation of the license.
using:
- appserver.io: https://github.com/appserver-io/appserver/blob/master/LICENSE.txt
diff --git a/vendor/choosealicense.com/_licenses/upl-1.0.txt b/vendor/choosealicense.com/_licenses/upl-1.0.txt
new file mode 100644
index 0000000..eab17b0
--- /dev/null
+++ b/vendor/choosealicense.com/_licenses/upl-1.0.txt
@@ -0,0 +1,67 @@
+---
+title: Universal Permissive License v1.0
+spdx-id: UPL-1.0
+source: https://oss.oracle.com/licenses/upl/
+
+description: A permissive, OSI and FSF approved, GPL compatible license, expressly allowing attribution with just a copyright notice and a short form link rather than the full text of the license. Includes an express grant of patent rights. Licensed works and modifications may be distributed under different terms and without source code, and the patent grant may also optionally be expanded to larger works to permit use as a contributor license agreement.
+
+how: Insert the license or a link to it along with a copyright notice into your source file(s), and/or create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license and your copyright notice into the file.
+
+note: It is recommended to add a link to the license and copyright notice at the top of each source file, example text can be found at https://oss.oracle.com/licenses/upl/.
+
+using:
+ - WebLogic Kubernetes Operator: https://github.com/oracle/weblogic-kubernetes-operator/blob/master/LICENSE
+ - Oracle Product Images for Docker: https://github.com/oracle/docker-images/blob/master/LICENSE
+ - Oracle Product Boxes for Vagrant: https://github.com/oracle/vagrant-boxes/blob/master/LICENSE
+
+permissions:
+ - commercial-use
+ - modifications
+ - distribution
+ - patent-use
+ - private-use
+
+conditions:
+ - include-copyright
+
+limitations:
+ - liability
+ - warranty
+
+---
+
+Copyright (c) [year] [fullname]
+
+The Universal Permissive License (UPL), Version 1.0
+
+Subject to the condition set forth below, permission is hereby granted to any
+person obtaining a copy of this software, associate documentation and/or data
+(collectively the "Software"), free of charge and under any and all copyright
+rights in the Software, and any and all patent rights owned or freely
+licensable by each licensor hereunder covering either (i) the unmodified
+Software as contributed to or provided by such licensor, or (ii) the Larger
+Works (as defined below), to deal in both
+
+(a) the Software, and
+(b) any piece of software and/or hardware listed in the lrgrwrks.txt file if
+one is included with the Software (each a “Larger Work” to which the Software
+is contributed by such licensors),
+
+without restriction, including without limitation the rights to copy, create
+derivative works of, display, perform, and distribute the Software and make,
+use, sell, offer for sale, import, export, have made, and have sold the
+Software and the Larger Work(s), and to sublicense the foregoing rights on
+either these or other terms.
+
+This license is subject to the following condition:
+The above copyright notice and either this complete permission notice or at
+a minimum a reference to the UPL must be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.