diff --git a/Gemfile b/Gemfile index c92472d..6677662 100644 --- a/Gemfile +++ b/Gemfile @@ -17,7 +17,6 @@ end group :test do gem 'html-proofer', '~> 3.0' gem 'licensee' - gem 'nokogiri' gem 'rake' gem 'rspec' gem 'rubocop' diff --git a/README.md b/README.md index 5cf6ebf..24c54d7 100644 --- a/README.md +++ b/README.md @@ -69,7 +69,7 @@ The licenses on choosealicense.com are regularly imported to GitHub.com to be us * `project` - The repository name * `description` - The description of the repository * `year` - The current year -* `project_url` - The repository URL or other project website +* `projecturl` - The repository URL or other project website ## License properties diff --git a/_data/fields.yml b/_data/fields.yml index e239043..4e55d42 100644 --- a/_data/fields.yml +++ b/_data/fields.yml @@ -22,5 +22,5 @@ - name: year description: The current year -- name: project_url +- name: projecturl description: The repository URL or other project website diff --git a/_licenses/ncsa.txt b/_licenses/ncsa.txt index 93b99b7..0897884 100644 --- a/_licenses/ncsa.txt +++ b/_licenses/ncsa.txt @@ -34,7 +34,7 @@ Copyright (c) [year] [fullname]. All rights reserved. Developed by: [project] [fullname] - [project_url] + [projecturl] Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files diff --git a/script/check-approval b/script/check-approval index 6b491db..6451818 100755 --- a/script/check-approval +++ b/script/check-approval @@ -52,6 +52,7 @@ approvals.each do |approver, licenses| rows << ["#{approver} approved", licenses.include?(license)] end +license_ids = licenses.map { |l| l['id'] } current = license_ids.include?(license) rows << ['Current license', current] diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index e66a9a1..2fb5fd8 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -4,7 +4,6 @@ require 'jekyll' require 'json' require 'licensee' require 'open-uri' -require 'nokogiri' module SpecHelper class << self @@ -86,7 +85,7 @@ def spdx_ids end def find_spdx(license) - spdx_list.find { |name, _properties| name == license } + spdx_list.find { |name, _properties| name.casecmp(license).zero? } end def osi_approved_licenses @@ -102,23 +101,15 @@ end def fsf_approved_licenses SpecHelper.fsf_approved_licenses ||= begin - url = 'https://www.gnu.org/licenses/license-list.en.html' - doc = Nokogiri::HTML(open(url).read) - list = doc.css('.green dt') + url = 'https://wking.github.io/fsf-api/licenses-full.json' + object = JSON.parse(open(url).read) licenses = {} - list.each do |license| - a = license.css('a').find { |link| !link.text.nil? && !link.text.empty? && link.attr('id') } - next if a.nil? - id = a.attr('id').downcase - name = a.text.strip - licenses[id] = name + object.each_value do |meta| + next unless (meta.include? 'identifiers') && (meta['identifiers'].include? 'spdx') && (meta.include? 'tags') && (meta['tags'].include? 'libre') + meta['identifiers']['spdx'].each do |identifier| + licenses[identifier.downcase] = meta['name'] + end end - - # FSF approved the Clear BSD, but doesn't use its SPDX ID or Name - if licenses.keys.include? 'clearbsd' - licenses['bsd-3-clause-clear'] = licenses['clearbsd'] - end - licenses end end