Skip to content
Snippets Groups Projects
Commit de7edd40 authored by lionellloh's avatar lionellloh
Browse files

brew update-license-data: checks if it is outdated. If so, save new ver

parent bc28ee0f
No related branches found
No related tags found
No related merge requests found
# frozen_string_literal: true
require "commands"
require "cli/parser"
require "open-uri"
require "json"
module Homebrew
module_function
SPDX_FOLDER_PATH = (HOMEBREW_LIBRARY_PATH/"data").freeze
FILE_NAME = "spdx.json".freeze
NEW_FILE_NAME = "spdx_new.json".freeze
SPDX_DATA_URL = "https://raw.githubusercontent.com/spdx/license-list-data/master/json/licenses.json"
def update_license_data_args
Homebrew::CLI::Parser.new do
usage_banner <<~EOS
`update_license_data` <cmd>
Update SPDX license data in the Homebrew repository.
EOS
switch "--fail-if-outdated",
description: "Return a failing status code if current license data's version is different from the upstream. This "\
"can be used to notify CI when the SPDX license data is out of date."
end
end
def update_license_data
update_license_data_args.parse
p args
curr_spdx_hash = File.open(SPDX_FOLDER_PATH/FILE_NAME, 'r') do |f|
JSON.parse(f.read)
end
puts "Fetching newest version of SPDX License data..."
updated_spdx_string = open(SPDX_DATA_URL) do |json|
json.read
end
updated_spdx_hash = JSON.parse(updated_spdx_string)
if curr_spdx_hash["licenseListVersion"] != updated_spdx_hash["licenseListVersion"]
puts "Current version is #{curr_spdx_hash["licenseListVersion"]} but newest version is #{updated_spdx_hash["licenseListVersion"]}\n"\
"Updating existing licences data file..."
File.open(SPDX_FOLDER_PATH/FILE_NAME, "wb") do |file|
file.write(updated_spdx_string)
end
if args.fail_if_outdated
Homebrew.failed = true
end
end
else
puts "Current version of license data is updated. No change required"
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment