scinote-web/lib/tasks/versions/generate_release_name.rake

89 lines
2.6 KiB
Ruby
Raw Normal View History

2017-08-23 14:35:48 +08:00
namespace :versions do
desc 'Generate a new release name'
task generate_release_name: :environment do
def rand_el(arr)
arr[rand(arr.count)]
end
# Load the data from JSON
adjectives = JSON.parse(File.read('lib/tasks/versions/adjectives.json'))
scientists = JSON.parse(File.read('lib/tasks/versions/scientists.json'))
puts '------------------------------------'
puts ''
puts 'sciNote release name generator v0.1 ALPHA'
puts ''
puts '------------------------------------'
puts ''
puts 'Choose what you would like to do:'
puts '1) Provide a scientist by yourself'
puts '2) Randomly choose a scientist from a pre-defined list'
res = $stdin.gets.strip
unless res.in?(['', '1', '2'])
puts 'Invalid parameter, exiting'
next
end
# First, pick scientist name
if res.in?(['', '1'])
puts 'Enter full scientist first name (all but surname) ' \
'in capitalized case'
first_name = $stdin.gets.strip
puts 'Enter full scientist surname ' \
'in capitalized case'
last_name = $stdin.gets.strip
key = last_name[0].downcase.to_sym
full_name = "#{first_name} #{last_name}"
else
key = rand_el(scientists.keys)
full_name = rand_el(scientists[key])
last_name = full_name.split(' ')[-1]
puts "Randomly chosen scientist: #{full_name}"
puts ''
end
# Now, pick adjective
adjective = rand_el(adjectives[key])
puts '------------------------------------'
puts 'Tadaaaa!'
puts 'The new release will be named......'
puts '(waaaaait for iiiiit)'
puts ''
puts '##############################################'
puts " #{adjective.capitalize} #{last_name}"
puts " (full name: #{full_name})"
puts '##############################################'
loop do
puts ''
puts 'What would you like to do?'
puts '(E) Exit'
puts '(a) generate new adjective'
puts '(s) generate new random scientist'
res = $stdin.gets.strip
unless res.in?(['', 'e', 'E', 'a', 'A', 's', 'S'])
puts 'Invalid parameter!'
next
end
break if res.in?(['', 'e', 'E'])
if res.in?(%w(s S))
key = rand_el(scientists.keys)
full_name = rand_el(scientists[key])
last_name = full_name.split(' ')[-1]
end
adjective = rand_el(adjectives[key])
puts ''
puts '##############################################'
puts " #{adjective.capitalize} #{last_name} "
puts " (full name: #{full_name})"
puts '##############################################'
end
end
end