class Coursemology::Evaluator::CLI

Constants

Options

Public Class Methods

start(argv) click to toggle source
# File lib/coursemology/evaluator/cli.rb, line 8
def self.start(argv)
  new.start(argv)
end

Public Instance Methods

run(argv) click to toggle source
# File lib/coursemology/evaluator/cli.rb, line 16
def run(argv)
  options = optparse!(argv)
  Coursemology::Evaluator.config.poll_interval =
    ::ISO8601::Duration.new("PT#{options.poll_interval}".upcase).to_seconds

  # Must include the time designator T if hours/minutes/seconds are required.
  Coursemology::Evaluator.config.image_lifetime =
    ::ISO8601::Duration.new("P#{options.image_lifetime}".upcase).to_seconds

  Coursemology::Evaluator::Client.initialize(options.host, options.api_user_email,
                                             options.api_token)

  # Sleep before start
  sleep(::ISO8601::Duration.new("PT#{options.sleep_time}".upcase).to_seconds)
  Coursemology::Evaluator::Client.new(options.one_shot).run
end
start(argv) click to toggle source
# File lib/coursemology/evaluator/cli.rb, line 12
def start(argv)
  run(argv)
end

Private Instance Methods

optparse!(argv) click to toggle source

Parses the options specified on the command line.

@param [Array<String>] argv The arguments specified on the command line. @return [Coursemology::Evaluator::CLI::Options]

# File lib/coursemology/evaluator/cli.rb, line 39
def optparse!(argv) # rubocop:disable Metrics/MethodLength
  options = Options.new

  # default options for optional parameters
  options.poll_interval = '10S'
  options.image_lifetime = '1D'
  options.one_shot = false
  options.sleep_time = '0S'

  option_parser = OptionParser.new do |parser|
    parser.banner = "Usage: #{parser.program_name} [options]"
    parser.on('-hHOST', '--host=HOST', 'Coursemology host to connect to') do |host|
      options.host = host
    end

    parser.on('-tTOKEN', '--api-token=TOKEN') do |token|
      options.api_token = token
    end

    parser.on('-uUSER', '--api-user-email=USER') do |user|
      options.api_user_email = user
    end

    parser.on('-iINTERVAL', '--interval=INTERVAL') do |interval|
      options.poll_interval = interval
    end

    parser.on('-lLIFETIME', '--lifetime=LIFETIME') do |lifetime|
      options.image_lifetime = lifetime
    end

    parser.on('-o', '--one-shot') do
      options.one_shot = true
    end

    parser.on('-sSLEEP', '--sleep=SLEEPTIME') do |sleeptime|
      options.sleep_time = sleeptime
    end
  end

  option_parser.parse!(argv)
  options
end