def conflict_menu(template)
choose do |menu|
menu.prompt = "How do you wish to proceed with this file?"
menu.choice(:skip) do
say("Skipped file")
end
menu.choice(:overwrite) do
say("Overwritten")
template.invoke! unless @options[:pretend]
end
menu.choice(:render) do
puts "Rendering " + template.relative_destination
puts ""
template.render.to_a.each_with_index do |line, i|
puts((i+1).to_s.rjust(4) + ': ' + line)
end
puts ""
puts ""
conflict_menu(template)
end
menu.choice(:diff) do
puts "Showing differences for " + template.relative_destination
puts ""
diffs = Diff::LCS.diff(::File.read(template.destination).to_s.to_a, template.render.to_a).first
diffs.each do |diff|
output_diff_line(diff)
end
puts ""
puts ""
conflict_menu(template)
end
menu.choice(:abort) do
say("Aborted!")
exit
end
end
end