class Siba::Restore
Attributes
current_source[RW]
Public Instance Methods
restore(path_to_options_yml, current_source)
click to toggle source
# File lib/siba/restore.rb, line 11 def restore(path_to_options_yml, current_source) @current_source = current_source run_restore path_to_options_yml ensure Siba.cleanup end
Private Instance Methods
get_backup_choice(tasks)
click to toggle source
# File lib/siba/restore.rb, line 43 def get_backup_choice(tasks) list = tasks.get_backups_list siba_file.run_this do if list.empty? logger.show_finish_message = false logger.info "No backups named '#{Siba.backup_name}' found" return end if list.size == 1 return list[0][0] else list.sort!{|a,b| b[1] <=> a[1]} siba_kernel.puts "\nAvailable '#{Siba.backup_name}' backups:\n" show_backups list file_name = get_backup_user_choice list if file_name.nil? logger.show_finish_message = false logger.info "Cancelled by user" end return file_name end end end
get_backup_user_choice(list)
click to toggle source
# File lib/siba/restore.rb, line 106 def get_backup_user_choice(list) msg = "\nChoose a backup to restore.\nEnter backup number from 1 to #{list.size}, or 0 to exit.\n> " siba_kernel.printf msg while true user_choice = siba_kernel.gets.chomp.strip number = Integer(user_choice) rescue -1 if number >= 0 && number <= list.size return if number == 0 return list[number-1][0] else siba_kernel.printf msg end end end
run_restore(path_to_options_yml)
click to toggle source
# File lib/siba/restore.rb, line 20 def run_restore(path_to_options_yml) LoggerPlug.create "Restore", nil options = Siba::OptionsLoader.load_yml path_to_options_yml Siba.current_dir = File.dirname path_to_options_yml Siba.settings = options["settings"] || {} Siba.backup_name = File.basename path_to_options_yml, ".yml" TmpDir.test_access tasks = SibaTasks.new options, path_to_options_yml, !current_source file_name = get_backup_choice tasks unless file_name.nil? if user_wants_to_proceed? tasks.restore file_name else logger.show_finish_message = false logger.info "Cancelled by user" end end Siba.cleanup_tmp_dir rescue Exception => e logger.fatal e logger.log_exception e, true end
show_backups(list)
click to toggle source
# File lib/siba/restore.rb, line 70 def show_backups(list) list.map! {|a| a << Siba::StringHelper.format_time(a[1])} max_date_length = list.max do |a,b| a[2].length <=> b[2].length end[2].length + 5 rows = list.size / 2 + list.size % 2 1.upto(rows) do |i| num1 = "#{i.to_s.rjust(2)}." str1 = list[i-1][2] column1 = sprintf("%s %-#{max_date_length}s", num1, str1) if (i+rows) <= list.size num2 = "#{(i+rows).to_s.rjust(2)}." str2 = list[i+rows-1][2] column2 = "#{num2} #{str2}" end siba_kernel.puts " #{column1}#{column2}" end end
user_wants_to_proceed?()
click to toggle source
# File lib/siba/restore.rb, line 91 def user_wants_to_proceed? if current_source source_msg = "CURRENT" else source_msg = "ORIGINAL" end siba_kernel.printf "\nWarning: backup will be restored into the #{source_msg} source location. Your source data will be overwritten and WILL BE LOST. Type 'yes' if you want to proceed: (yes/n) > " user_choice = siba_kernel.gets.chomp.strip return user_choice.downcase == "yes" end