lib/org-converge/command.rb in org-converge-0.0.5 vs lib/org-converge/command.rb in org-converge-0.0.6
- old
+ new
@@ -6,19 +6,22 @@
attr_reader :engine
def initialize(options)
@options = options
@dotorg = options['<org_file>']
- @logger = Logger.new(options['--log'] || STDOUT)
@root_dir = options['--root-dir']
@run_dir = if @root_dir
File.expand_path(File.join(@root_dir, 'run'))
else
File.expand_path('run')
end
@ob = Orgmode::Parser.new(File.read(dotorg)).babelize
@babel = nil
+ @logger = Logger.new(options['--log'] || STDOUT)
+ logger.formatter = proc do |severity, datetime, progname, msg|
+ "[#{datetime.strftime('%Y-%m-%dT%H:%M:%S %z')}] #{msg}\n"
+ end
end
def execute!
case
when @options['--showfiles']
@@ -35,12 +38,15 @@
false
end
def converge!
tangle!
- if @options['--runmode']
+ case
+ when @options['--runmode']
dispatch_runmode(@options['--runmode'])
+ when @options['--name']
+ run_matching_blocks!
else
# Try to find one in the buffer
runmode = ob.in_buffer_settings['RUNMODE']
dispatch_runmode(runmode)
end
@@ -104,9 +110,25 @@
display_name = script[:header][:name]
@engine.register display_name, cmd, { :cwd => @root_dir, :logger => logger }
end
logger.info "Running code blocks now! (#{babel.ob.scripts.count} runnable blocks found in total)"
+ @engine.start
+ logger.info "Run has completed successfully.".fg 'green'
+ end
+
+ def run_matching_blocks!
+ @engine = OrgConverge::Engine.new(:logger => @logger, :babel => @babel)
+ babel.tangle_runnable_blocks!(@run_dir, :filter => @options['--name'])
+ scripts = babel.ob.scripts.select {|k, h| h[:header][:name] =~ Regexp.new(@options['--name']) }
+ scripts.each do |key, script|
+ file = File.expand_path("#{@run_dir}/#{key}")
+ cmd = "#{script[:lang]} #{file}"
+ display_name = script[:header][:name]
+ @engine.register display_name, cmd, { :cwd => @root_dir, :logger => logger }
+ end
+
+ logger.info "Running code blocks now! (#{scripts.count} runnable blocks found in total)"
@engine.start
logger.info "Run has completed successfully.".fg 'green'
end
def with_running_engine