lib/imw/runner.rb in imw-0.2.1 vs lib/imw/runner.rb in imw-0.2.2

- old
+ new

@@ -31,10 +31,18 @@ Options include EOF + opts.on('-v', '--verbose', "Print verbose output") do + IMW.verbose = true # class level, see IMW::Runner.verbose? + end + + opts.on('-d', '--skip-dependencies', "Execute given tasks without invoking dependencies first") do + options[:execute] = true + end + opts.on('-l', '--list', "List datasets in repository") do options[:list] = true end opts.on('-s', '--selector SELECTOR', "Filter datasets by regexp SELECTOR. Can be given more than once.") do |selector| @@ -47,11 +55,12 @@ end end def require_files - Dir['*.imw'].each { |path| load File.expand_path(path) } + Dir['*.imw'].each { |path| load File.expand_path(path) } + Dir['*.rb'].each { |path| require path.gsub(/\.rb$/,'') } options[:requires].each do |path| IMW.open(path) do |requireable| if requireable.directory? requireable["**/*.rb"].each { |file| require file } requireable["**/*.imw"].each { |file| load file } @@ -65,23 +74,17 @@ def task args.first end def handles - require 'set' - matched_handles = Set.new if options[:selectors].blank? - matched_handles += IMW.repository.keys + IMW.repository.keys.sort else - keys = IMW.repository.keys - unless keys.empty? - options[:selectors].each do |selector| - matched_handles += keys.find_all { |key| key =~ Regexp.new(selector) } - end - end + IMW.repository.handles.map do |handle| + handle if options[:selectors].all? { |selector| handle.to_s =~ Regexp.new(selector) } + end.compact.sort end - matched_handles.to_a.sort end def datasets handles.map { |handle| IMW.repository[handle] } end @@ -91,10 +94,10 @@ exit end def run_task! datasets.each do |dataset| - dataset[task].invoke + dataset[task].send(options[:execute] ? :execute : :invoke) end exit end def run!