Module: Specify::CLI
- Defined in:
- lib/specify/cli/stubs.rb,
lib/specify/cli/viewset.rb,
lib/specify/cli/database_setup.rb
Class Method Summary collapse
- .arg_to_hash(arg) ⇒ Object
- .configure_database(config) ⇒ Object
- .configure_host(config) ⇒ Object
- .db_config!(file, global_options) ⇒ Object
- .level(options) ⇒ Object
- .make_stubs(generator, count) ⇒ Object
- .proceed?(message) ⇒ Boolean
- .require_input(message) ⇒ Object
- .stub_parameters(options) ⇒ Object
- .wrap_args(global_options, args, options) ⇒ Object
Class Method Details
.arg_to_hash(arg) ⇒ Object
5 6 7 8 9 10 11 |
# File 'lib/specify/cli/stubs.rb', line 5 def self.arg_to_hash(arg) return unless arg arg.split(';') .map { |pair| pair.split(':').map(&:strip) } .to_h .transform_keys { |key| key == 'locality' ? key.to_sym : key } end |
.configure_database(config) ⇒ Object
5 6 7 8 9 10 11 |
# File 'lib/specify/cli/database_setup.rb', line 5 def self.configure_database(config) STDERR.puts "Configuring new database: #{config.database}" config.user_name = require_input 'MySQL user name' config.user_password = require_input 'password (blank for prompt)' config.session_user = require_input 'Specify user (leave blank to skip)' config.save end |
.configure_host(config) ⇒ Object
13 14 15 16 17 |
# File 'lib/specify/cli/database_setup.rb', line 13 def self.configure_host(config) return unless proceed? "host #{config.host} not known" config.port = require_input 'port number (leave blank for default)' config.save end |
.db_config!(file, global_options) ⇒ Object
19 20 21 22 23 24 25 |
# File 'lib/specify/cli/database_setup.rb', line 19 def self.db_config!(file, ) return if File.exist?([:db_config]) STDERR.puts "Creating new config file #{file}" Specify::Configuration::Config.empty file do |config| config.add_host [:host], [:port] end end |
.level(options) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/specify/cli/viewset.rb', line 5 def self.level() if [:d] :discipline elsif [:c] :collection elsif [:t] { user_type: [:t] } elsif [:u] { user: [:u] } else raise 'level required (use -d, -c, -t, or -u option)' end end |
.make_stubs(generator, count) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/specify/cli/stubs.rb', line 13 def self.make_stubs(generator, count) STDERR.puts "started creating #{count} records" STDERR.puts "cataloger: #{generator.cataloger}" generator.database.transaction do generator.create count STDERR.puts "creating: #{generator.generated.last.catalog_number}" end STDERR.puts 'done' puts "generated #{generator.generated.count} catalog numbers:" puts '--------------------------' generator.generated.each { |co| puts co.CatalogNumber } end |
.proceed?(message) ⇒ Boolean
27 28 29 30 31 |
# File 'lib/specify/cli/database_setup.rb', line 27 def self.proceed?() STDERR.puts STDERR.print "Configure? (Y/n)" return true if /^[Yy](es)?/.match Readline.readline(': ') end |
.require_input(message) ⇒ Object
33 34 35 36 37 38 |
# File 'lib/specify/cli/database_setup.rb', line 33 def self.require_input() STDERR.print answer = Readline.readline(': ') return if answer.empty? answer end |
.stub_parameters(options) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/specify/cli/stubs.rb', line 38 def self.stub_parameters() params = { 'dataset_name' => [:dataset], 'cataloger' => [:cataloger], 'accession' => [:accession], 'collecting_data' => arg_to_hash([:geography]), 'default_locality_name' => [:locality], 'determination' => arg_to_hash([:taxon]) } return params unless [:preptype] params['preparation'] = { type: [:preptype], count: [:prepcount] } params.compact end |
.wrap_args(global_options, args, options) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/specify/cli/stubs.rb', line 26 def self.wrap_args(, args, ) params = {} stub_generator = {} stub_generator[:host] = [:host] stub_generator[:database] = [:database] stub_generator[:collection] = args.shift stub_generator[:specify_user] = [:specify_user] stub_generator[:config] = [:db_config] params[:stub_generator] = stub_generator params.merge stub_parameters() end |