Module: Beaker::Options::OptionsFileParser

Defined in:
lib/beaker/options/options_file_parser.rb

Overview

A set of functions to read options files

Class Method Summary collapse

Class Method Details

.parse_options_file(options_file_path) ⇒ OptionsHash

Note:

Since the options_file is Eval'ed, any other Ruby commands will also be executed, this can be used to set additional environment variables

Eval the contents of options_file_path, return as an OptionsHash

Options file is assumed to contain extra options stored in a Hash

ie,

{
  :debug => true,
  :tests => "test.rb",
}

Examples:

options_hash = OptionsFileParser.parse_options_file('sample.cfg')
options_hash == {:debug=>true, :tests=>"test.rb", :pre_suite=>["pre-suite.rb"], :post_suite=>"post_suite1.rb,post_suite2.rb"}

Parameters:

  • options_file_path (String)

    The path to the options file

Returns:

  • (OptionsHash)

    The contents of the options file as an OptionsHash

Raises:

  • (ArgumentError)

    Raises if options_file_path is not a path to a file



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/beaker/options/options_file_parser.rb', line 27

def self.parse_options_file(options_file_path)
  result = Beaker::Options::OptionsHash.new
  if options_file_path
    options_file_path = File.expand_path(options_file_path)
    unless File.exists?(options_file_path)
      raise ArgumentError, "Specified options file '#{options_file_path}' does not exist!"
    end
    # This eval will allow the specified options file to have access to our
    #  scope.  It is important that the variable 'options_file_path' is
    #  accessible, because some existing options files (e.g. puppetdb) rely on
    #  that variable to determine their own location (for use in 'require's, etc.)
    result = result.merge(eval(File.read(options_file_path)))
  end
  result
end