def self.saved_session
result = {}
if @options.fetch( :use_safety_save, false ) && file = @options.fetch( :answers_output_file )
_file = File.join( File.dirname( file ), ".#{File.basename( file )}" )
if File.file?( _file )
lines = File.open( _file, 'r' ).readlines
saved_hash = read_answers_file _file
last_item = nil
if saved_hash.keys.size > 0
last_item = {saved_hash.keys.last =>
saved_hash[ saved_hash.keys.last ]}.to_yaml.gsub( /^---/, '' ).strip
end
color = :YELLOW
message = %Q{WARNING: interrupted session detected!}
logger.warn( "*** #{message} ***\n", [color, :BOLD] )
logger.warn( "An automatic safety-save file from a previous session has been found at:",
[color] )
logger.warn(" #{_file}\n", [:BOLD] )
if last_item
logger.warn( "The most recent answer from this session was:", [color] )
logger.warn( "#{last_item.gsub( /^/, " " )}\n", [:BOLD] )
end
if @options.fetch( :autoaccept_safety_save, false )
logger.warn(
"Automatically resuming these answers because ", [color],
"--accept-safety-save", [color,:BOLD],
" is active.\n", [color])
result = saved_hash
else
logger.warn( "You can resume these answers or delete the file.\n", [color] )
if agree( "Resume the session? (no = deletes file)" ){ |q| q.default = 'yes' }
logger.info( "\nApplying answers from '#{_file}'", [:GREEN])
result = saved_hash
else
logger.debug( "\nRemoving file '#{_file}'", [:RED] )
FileUtils.rm_f _file
end
end
sleep 1
end
end
result
end