class OptionHandler

Attributes

optionparser[R]
options[R]

Public Class Methods

new(arguments = []) click to toggle source
# File lib/moodleQuizDownloader/option_handler.rb, line 9
def initialize(arguments = [])
  @arguments = arguments
  @options, @optionparser = parse(arguments)
end

Public Instance Methods

parse(args = @arguments) click to toggle source
# File lib/moodleQuizDownloader/option_handler.rb, line 28
  def parse(args = @arguments)
    # The options specified on the command line will be collected in *options*.
    # We set default values here.
    options = OpenStruct.new
    options.valid = true
    options.verbose = false
    options.moodle_username = ENV['MOODLE_USERNAME']
    options.moodle_password = ENV['MOODLE_PASSWORD']
    options.moodle_server = ENV['MOODLE_SERVER']
    options.outputdir = "out"
    options.exam_id = 0
    options.command = :list
    options.usage = nil
    options.html = false


    opt_parser = OptionParser.new do |opts|
      opts.banner = <<DELIM
Usage: moodleQuizDownloader [options] <command>
Where <command> is one of the following: #{valid_commands.join(", ")}
DELIM

      opts.separator ""
      opts.separator "Specific options:"

      opts.on("-e", "--exam EXAM_ID",
              "The ID of the Exam to be downloaded") do | id |
        options.exam_id = id
      end
      opts.on("-o", "--outputdir DIR",
              "Output Dir (defaults to . )") do | dir |
        options.outputdir = dir
      end
      opts.on("-h", "--html",
              "Save Exams in HTML instead as PDFs") do | html |
        options.html = html
      end

      opts.on("-u", "--user USERNAME",
              "Your Moodle User Name",
              "(can also be set via MOODLE_USERNAME environment variable)") do |username|
        options.moodle_username = username
      end
      opts.on("-p", "--password PASSWORD",
              "Your Moodle Password",
              "(can also be set via MOODLE_PASSWORD environment variable)") do |password|
        options.moodle_password = password
      end

      opts.on("-s", "--server SERVER",
              "Your Moodle Server",
              "(can also be set via MOODLE_SERVER environment variable)") do |server|
        options.moodle_server = server
      end

      opts.separator ""
      opts.separator "Common options:"

      opts.on_tail("-h", "--help", "Show this message") do
        puts opts
        exit
      end

      opts.on_tail("-v", "--version", "Show version") do
        options.command = :version
      end
      opts.on("-b", "--[no-]verbose", "Run verbosely") do |v|
        options.verbose = v
      end

    end
    opt_parser.order(args) do | command |
      command = command.to_sym
      if valid_commands.include?(command)
        options.command = command
      else
        options.valid=false
      end
    end
    validate(options,opt_parser)
    options
  end
usage() click to toggle source
# File lib/moodleQuizDownloader/option_handler.rb, line 13
def usage
  @options.usage
end
valid?(options) click to toggle source
# File lib/moodleQuizDownloader/option_handler.rb, line 20
def valid?(options)
  options.valid &&
  options.moodle_username &&
  #options.moodle_password &&
  options.moodle_server &&
  options.exam_id != 0
end
valid_commands() click to toggle source
# File lib/moodleQuizDownloader/option_handler.rb, line 5
def valid_commands
  [:list, :download, :connect, :options]
end
validate(options,optionparser) click to toggle source
# File lib/moodleQuizDownloader/option_handler.rb, line 17
def validate(options,optionparser)
  options.usage = optionparser.help unless valid?(options)
end