vivo/utilities/releaseScripts/1_setup.rb

142 lines
3.6 KiB
Ruby
Raw Normal View History

=begin
--------------------------------------------------------------------------------
Check for the required parameters of base directory, username, email address,
revision label and candidate label.
Offer to run the licenser to be sure that we are ready to go.
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
=end
$: << File.dirname(File.expand_path(__FILE__))
require '_common'
#
# ------------------------------------------------------------------------------------
# Runs the licenser against both VIVO and Vitro, and shows the results.
# ------------------------------------------------------------------------------------
#
class LicenserCaller
def call_licenser(property_file)
properties = PropertyFileReader.read(property_file)
l = Licenser.new(properties)
l.process
l.report(properties)
return l.success?
end
def initialize()
require "#{Settings.vitro_path}/utilities/licenser/licenser"
require "#{Settings.vitro_path}/utilities/licenser/property_file_reader"
puts "Scanning VIVO..."
vivo_success = call_licenser("#{Settings.vivo_path}/config/licenser/licenser.properties")
puts "Scanning Vitro..."
vitro_success = call_licenser("#{Settings.vitro_path}/webapp/config/licenser/licenser.properties")
if vivo_success && vitro_success
puts "Licenser was successful"
else
puts "Licenser found problems"
end
end
end
#
# Show the current value of the setting, ask for a replacement value, validate it, and set it.
#
def do_setting(getter, validator, setter, label, format="a string")
v1 = getter.call
currently = v1.empty? ? "Currently not set" : "Currently '#{v1}'"
v2 = prompt "#{label}?\n(#{format})\n(#{currently})"
v2 = v1 if v2.empty?
v2 = validator.call(v2)
if v2.empty?
raise InputException.new("Can't run without #{label}")
elsif v1 == v2
puts "Keeping #{label} as '#{v2}'"
puts
else
puts "Setting #{label} to '#{v2}'"
setter.call(v2)
puts
end
v2
end
def get_base_directory()
do_setting(
Settings.method(:base_directory),
Settings.method(:confirm_base_directory),
Settings.method(:base_directory=),
"Git base directory",
"holds Vitro and VIVO repositories")
end
def get_user_name()
do_setting(
Settings.method(:username),
Settings.method(:confirm_username),
Settings.method(:username=),
"Git user.name")
end
def get_email()
do_setting(
Settings.method(:email),
Settings.method(:confirm_email),
Settings.method(:email=),
"Git user.email")
end
def get_release_label()
do_setting(
Settings.method(:release_label),
Settings.method(:confirm_release_label),
Settings.method(:release_label=),
"Release label",
"like '3.2' or '3.2.1'")
end
def get_candidate_label()
do_setting(
Settings.method(:candidate_label),
Settings.method(:confirm_candidate_label),
Settings.method(:candidate_label=),
"Release candidate label",
"like 'rc1' or 'tc3' or 'final'")
end
def run_licenser()
puts "It's a good idea to check the licenses before proceeding."
yn = prompt "Ready to run the licenser? (y/n)"
if (yn.downcase == 'y')
LicenserCaller.new()
else
puts "OK - forget it."
end
end
#
# ------------------------------------------------------------------------------------
# Main method
# ------------------------------------------------------------------------------------
#
begin
get_base_directory()
get_user_name()
get_email()
get_release_label()
get_candidate_label()
run_licenser()
rescue BadState
puts
puts "#{$!.message} - Aborting."
puts
end