aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--railties/lib/rails_generator/commands.rb24
1 files changed, 17 insertions, 7 deletions
diff --git a/railties/lib/rails_generator/commands.rb b/railties/lib/rails_generator/commands.rb
index 4b6f7ecd15..b541c6f65d 100644
--- a/railties/lib/rails_generator/commands.rb
+++ b/railties/lib/rails_generator/commands.rb
@@ -93,9 +93,9 @@ module Rails
private
# Ask the user interactively whether to force collision.
def force_file_collision?(destination, src, dst, file_options = {}, &block)
- $stdout.print "overwrite #{destination}? [Ynaqd] "
- case $stdin.gets
- when /d/i
+ $stdout.print "overwrite #{destination}? (enter \"h\" for help) [Ynaqdh] "
+ case $stdin.gets.chomp
+ when /\Ad\z/i
Tempfile.open(File.basename(destination), File.dirname(dst)) do |temp|
temp.write render_file(src, file_options, &block)
temp.rewind
@@ -103,14 +103,24 @@ module Rails
end
puts "retrying"
raise 'retry diff'
- when /a/i
+ when /\Aa\z/i
$stdout.puts "forcing #{spec.name}"
options[:collision] = :force
- when /q/i
+ when /\Aq\z/i
$stdout.puts "aborting #{spec.name}"
raise SystemExit
- when /n/i then :skip
- else :force
+ when /\An\z/i then :skip
+ when /\Ay\z/i then :force
+ else
+ $stdout.puts <<-HELP
+Y - yes, overwrite
+n - no, do not overwrite
+a - all, overwrite this and all others
+q - quit, abort
+d - diff, show the differences between the old and the new
+h - help, show this help
+HELP
+ raise 'retry'
end
rescue
retry