Sha256: 0c81d44e11bceedc1b4b5a8c94a9cac66aee701aa760dde4c2cd4f802b317284

Contents?: true

Size: 1.79 KB

Versions: 16

Compression:

Stored size: 1.79 KB

Contents

require 'open-uri'
module Beaker
  module Options
    # A set of functions to read options files
    module OptionsFileParser
      # 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",
      #   }
      #
      # @param [String] options_file_path The path to the options file
      #
      # @example
      #     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"}
      #
      # @return [OptionsHash] The contents of the options file as an OptionsHash
      # @raise [ArgumentError] Raises if options_file_path is not a path to a file
      # @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
      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)
          raise ArgumentError, "Specified options file '#{options_file_path}' does not exist!" unless File.exist?(options_file_path)

          # 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
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
beaker-6.4.1 lib/beaker/options/options_file_parser.rb
beaker-6.4.0 lib/beaker/options/options_file_parser.rb
beaker-6.3.0 lib/beaker/options/options_file_parser.rb
beaker-6.2.0 lib/beaker/options/options_file_parser.rb
beaker-6.1.0 lib/beaker/options/options_file_parser.rb
beaker-5.8.1 lib/beaker/options/options_file_parser.rb
beaker-5.8.0 lib/beaker/options/options_file_parser.rb
beaker-5.7.0 lib/beaker/options/options_file_parser.rb
beaker-5.6.0 lib/beaker/options/options_file_parser.rb
beaker-5.5.0 lib/beaker/options/options_file_parser.rb
beaker-5.4.0 lib/beaker/options/options_file_parser.rb
beaker-5.3.1 lib/beaker/options/options_file_parser.rb
beaker-5.3.0 lib/beaker/options/options_file_parser.rb
beaker-5.2.0 lib/beaker/options/options_file_parser.rb
beaker-5.1.0 lib/beaker/options/options_file_parser.rb
beaker-5.0.0 lib/beaker/options/options_file_parser.rb