lib/gurke/cli.rb in gurke-2.1.0 vs lib/gurke/cli.rb in gurke-2.2.1

- old
+ new

@@ -26,12 +26,11 @@ options[:require].each do |r| Dir[r].each{|f| require File.expand_path(f) } end if options[:require].any? - files = Dir[options[:pattern].to_s] if files.empty? && options[:pattern] - files.map!{|f| File.expand_path(f) } + files = expand_files files, options runner = if options[:drb_server] Runner::DRbServer elsif options[:drb] Runner::DRbClient @@ -56,10 +55,12 @@ def parser @parser ||= Trollop::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', @@ -69,9 +70,25 @@ '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 + + private + def expand_files(files, options) + files = Dir[options[:pattern].to_s] if files.empty? && options[:pattern] + files.inject([]) do |memo, input| + if File.directory? input + Dir[input + '/**/*'].each do |file_in_dir| + next if options[:pattern] && !File.fnmatch?(options[:pattern], file_in_dir) + memo << File.expand_path(file_in_dir) + end + else + memo << File.expand_path(input) + end + memo end end end end