mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-11-18 23:21:30 +08:00
88 lines
2.6 KiB
Ruby
88 lines
2.6 KiB
Ruby
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
|