mirror of
				https://github.com/scinote-eln/scinote-web.git
				synced 2025-11-01 00:56:05 +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
 |