mirror of
https://github.com/github/choosealicense.com
synced 2024-12-22 12:50:24 +01:00
60 lines
1.1 KiB
Ruby
60 lines
1.1 KiB
Ruby
require 'jekyll'
|
|
require 'open-uri'
|
|
require 'json'
|
|
|
|
def config_file
|
|
File.expand_path "./_config.yml", source
|
|
end
|
|
|
|
def source
|
|
File.expand_path("../", File.dirname(__FILE__))
|
|
end
|
|
|
|
def config
|
|
config = Jekyll::Configuration.new.read_config_file config_file
|
|
config = Jekyll::Utils.deep_merge_hashes(config, {:source => source})
|
|
Jekyll::Utils.deep_merge_hashes(Jekyll::Configuration::DEFAULTS, config)
|
|
end
|
|
|
|
def licenses
|
|
site.collections["licenses"].docs.map { |l| l.to_liquid.merge("id" => l.basename(".txt")) }
|
|
end
|
|
|
|
def families
|
|
licenses.map { |l| l["family"] }.compact.uniq
|
|
end
|
|
|
|
def site
|
|
$site ||= begin
|
|
site = Jekyll::Site.new(config)
|
|
site.reset
|
|
site.read
|
|
site
|
|
end
|
|
end
|
|
|
|
def rules
|
|
site.data["rules"]
|
|
end
|
|
|
|
def fields
|
|
site.data["fields"]
|
|
end
|
|
|
|
def meta
|
|
site.data["meta"]
|
|
end
|
|
|
|
def rule?(tag, group)
|
|
rules[group].any? { |r| r["tag"] == tag }
|
|
end
|
|
|
|
def spdx_list
|
|
url = "https://raw.githubusercontent.com/sindresorhus/spdx-license-list/master/spdx.json"
|
|
$spdx ||= JSON.parse(open(url).read)
|
|
end
|
|
|
|
def find_spdx(license)
|
|
spdx_list.find { |name, properties| name.downcase == license }
|
|
end
|