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!