Add a warning prompt to the setup task

This commit is contained in:
Riyad Preukschas 2013-01-17 21:19:36 +01:00
parent 48a5012b21
commit bc59fd046f
2 changed files with 46 additions and 5 deletions

View file

@ -1,10 +1,24 @@
namespace :gitlab do
namespace :app do
desc "GITLAB | Setup production application"
task :setup => [
'db:setup',
'db:seed_fu',
'gitlab:enable_automerge'
]
task :setup => :environment do
setup
end
def setup
warn_user_is_not_gitlab
puts "This will create the necessary database tables and seed the database."
puts "You will lose any previous data stored in the database."
ask_to_continue
puts ""
Rake::Task["db:setup"].invoke
Rake::Task["db:seed_fu"].invoke
Rake::Task["gitlab:enable_automerge"].invoke
rescue Gitlab::TaskAbortedByUserError
puts "Quitting...".red
exit 1
end
end
end

View file

@ -1,5 +1,18 @@
module Gitlab
class TaskAbortedByUserError < StandardError; end
end
namespace :gitlab do
# Ask if the user wants to continue
#
# Returns "yes" the user chose to continue
# Raises Gitlab::TaskAbortedByUserError if the user chose *not* to continue
def ask_to_continue
answer = prompt("Do you want to continue (yes/no)? ".blue, %w{yes no})
raise Gitlab::TaskAbortedByUserError unless answer == "yes"
end
# Check which OS is running
#
# It will primarily use lsb_relase to determine the OS.
@ -22,6 +35,20 @@ namespace :gitlab do
os_name.try(:squish!)
end
# Prompt the user to input something
#
# message - the message to display before input
# choices - array of strings of acceptible answers or nil for any answer
#
# Returns the user's answer
def prompt(message, choices = nil)
begin
print(message)
answer = STDIN.gets.chomp
end while choices.present? && !choices.include?(answer)
answer
end
# Runs the given command and matches the output agains the given pattern
#
# Returns nil if nothing matched