Class: CukeCommander::CLGenerator

Inherits:
Object
  • Object
show all
Defined in:
lib/cuke_commander/cl_generator.rb

Overview

The object responsible for generating Cucumber command lines.

Instance Method Summary collapse

Instance Method Details

#generate_command_line(options = {}) ⇒ Object

Generates a Cucumber command line.

Most option values are either an Array or a boolean value. In the case of the former, a String can be used instead of an Array when only a single value is needed. Some option values come in pairs (e.g. formatters and their output locations). These option values are taken as a Hash where a key is the first part of the pair and the key’s value is the second part.

Parameters:

  • options (Hash) (defaults to: {})

    the Cucumber options that the command line should include.



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/cuke_commander/cl_generator.rb', line 15

def generate_command_line(options = {})
  validate_options(options)
  command_line = 'cucumber'

  append_options(command_line, wrap_options(options[:profiles]),   flag_for(:profiles, options[:long_flags]))    if options[:profiles]
  append_options(command_line, wrap_options(options[:names]),      flag_for(:names, options[:long_flags]))       if options[:names]
  append_options(command_line, wrap_options(options[:tags]),       flag_for(:tags, options[:long_flags]))        if options[:tags]
  append_options(command_line, wrap_options(options[:file_paths]))                                               if options[:file_paths]
  append_options(command_line, wrap_options(options[:excludes]),   flag_for(:excludes, options[:long_flags]))    if options[:excludes]
  append_options(command_line, wrap_options(options[:requires]),   flag_for(:requires, options[:long_flags]))    if options[:requires]
  append_option(command_line,                                      flag_for(:no_source, options[:long_flags]))   if options[:no_source]

  if options[:formatters]
    options[:formatters].each do |format, output_location|
      append_option(command_line, format, flag_for(:format, options[:long_flags]))
      append_option(command_line, output_location,flag_for(:output, options[:long_flags])) unless output_location.to_s.empty?
    end
  end

  append_option(command_line, flag_for(:no_color,options[:long_flags]))                                      if options[:no_color]
  append_option(command_line, flag_for(:color,options[:long_flags]))                                         if options[:color]
  append_option(command_line, flag_for(:backtrace,options[:long_flags]))                                     if options[:backtrace]
  append_option(command_line, flag_for(:dry_run,options[:long_flags]))                                       if options[:dry_run]
  append_option(command_line, flag_for(:no_profile,options[:long_flags]))                                    if options[:no_profile]
  append_option(command_line, flag_for(:guess,options[:long_flags]))                                         if options[:guess]
  append_option(command_line, flag_for(:wip,options[:long_flags]))                                           if options[:wip]
  append_option(command_line, flag_for(:quiet,options[:long_flags]))                                         if options[:quiet]
  append_option(command_line, flag_for(:verbose,options[:long_flags]))                                       if options[:verbose]
  append_option(command_line, flag_for(:version,options[:long_flags]))                                       if options[:version]
  append_option(command_line, flag_for(:help,options[:long_flags]))                                          if options[:help]
  append_option(command_line, flag_for(:expand,options[:long_flags]))                                        if options[:expand]
  append_option(command_line, flag_for(:strict,options[:long_flags]))                                        if options[:strict]

  append_options(command_line, wrap_options(options[:options]))                                              if options[:options]

  command_line
end