lib/synvert/cli.rb in synvert-0.17.0 vs lib/synvert/cli.rb in synvert-0.18.0
- old
+ new
@@ -38,10 +38,12 @@
show_rewriter
when 'sync'
sync_snippets
when 'generate'
generate_snippet
+ when 'execute'
+ execute_snippet
else
# run
load_rewriters
run_snippet
end
@@ -92,10 +94,13 @@
@options[:snippet_name] = snippet_name
end
opts.on '--sync', 'sync snippets' do
@options[:command] = 'sync'
end
+ opts.on '--execute', 'execute snippet' do
+ @options[:command] = 'execute'
+ end
opts.on '-r', '--run SNIPPET_NAME', 'run specified snippet, e.g. ruby/new_hash_syntax' do |snippet_name|
@options[:snippet_name] = snippet_name
end
opts.on '-g', '--generate NEW_SNIPPET_NAME', 'generate a new snippet' do |name|
@options[:command] = 'generate'
@@ -239,9 +244,31 @@
puts rewriter.todo if rewriter.todo
puts "===== #{snippet_name} done ====="
elsif json_output?
group, name = snippet_name.split('/')
rewriter = Core::Rewriter.call group, name
+ output = {
+ affected_files: rewriter.affected_files.union(rewriter.sub_snippets.sum([], &:affected_files)).to_a,
+ warnings: rewriter.warnings.union(rewriter.sub_snippets.sum([], &:warnings)),
+ todo: rewriter.todo
+ }
+ puts JSON.generate(output)
+ end
+ end
+
+ # execute snippet
+ def execute_snippet
+ input = STDIN.read
+ if plain_output?
+ puts "===== execute started ====="
+ rewriter = eval(input)
+ rewriter.warnings.each do |warning|
+ puts '[Warn] ' + warning.message
+ end
+ puts rewriter.todo if rewriter.todo
+ puts "===== execute done ====="
+ elsif json_output?
+ rewriter = eval(input)
output = {
affected_files: rewriter.affected_files.union(rewriter.sub_snippets.sum([], &:affected_files)).to_a,
warnings: rewriter.warnings.union(rewriter.sub_snippets.sum([], &:warnings)),
todo: rewriter.todo
}