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.