class Gurke::CLI

Public Instance Methods

call(options, files) click to toggle source
# File lib/gurke/cli.rb, line 24
def call(options, files)
  if File.exist?(Gurke.root.join('gurke.rb'))
    require File.expand_path(Gurke.root.join('gurke.rb'))
  end

  if options[:require].any?
    options[:require].each do |r|
      Dir[r].each {|f| require File.expand_path(f) }
    end
  end

  files = expand_files files, options

  runner = if options[:drb_server]
             Runner::DRbServer
           elsif options[:drb]
             Runner::DRbClient
           else
             Runner::LocalRunner
           end.new(Gurke.config, options)

  Kernel.exit runner.run files
end
parser() click to toggle source
# File lib/gurke/cli.rb, line 58
def parser
  @parser ||= Optimist::Parser.new do
    opt :help, 'Print this help.'
    opt :version, 'Show program version information.'
    opt :backtrace, 'Show full error backtraces.'
    opt :formatter, 'Select a special formatter as reporter', \
      default: 'default'
    opt :pattern, 'File pattern matching feature files to be run.',
      default: 'features/**/*.feature'
    opt :require, 'Files matching this pattern will be required after' \
                  'loading environment but before running features.',
      default: ['features/steps/**/*.rb',
                'features/support/steps/**/*.rb'],
      multi: true
    opt :tags, 'Only run features and scenarios matching given tag ' \
               'filtering expression. TODO: Description.',
      default: ['~wip'],
      multi: true
    opt :drb_server, 'Run gurke DRb server. (experimental)', short: :none
    opt :drb, 'Run features on already started DRb server. (experimental)',
      short: :none
  end
end
print_help() click to toggle source
print_version() click to toggle source
run(argv) click to toggle source

Run CLI with given arguments.

@param argv [Array<String>] Tokenized argument list.

# File lib/gurke/cli.rb, line 12
def run(argv)
  call parser.parse(argv), argv
rescue Optimist::VersionNeeded
  print_version && exit
rescue Optimist::HelpNeeded
  print_help && exit
rescue Optimist::CommandlineError => e
  warn "Error: #{e}"
  warn "Run with `-h' for more information on available arguments."
  exit 255
end

Private Instance Methods

expand_files(files, options) click to toggle source
# File lib/gurke/cli.rb, line 84
def expand_files(files, options)
  files = Dir[options[:pattern].to_s] if files.empty? && options[:pattern]
  files.each_with_object([]) do |input, memo|
    if File.directory? input
      Dir[input + '/**/*'].each do |file_in_dir|
        if options[:pattern] &&
           !File.fnmatch?(options[:pattern], file_in_dir)
          next
        end

        memo << File.expand_path(file_in_dir)
      end
    else
      memo << File.expand_path(input)
    end
  end
end