class DanarchyDeploy::Archiver
Public Class Methods
new(archives, options)
click to toggle source
# File lib/danarchy_deploy/archiver.rb, line 5 def self.new(archives, options) puts "\n" + self.name archives.each do |archive| abort("No target destination set for archive: #{archive[:source]}!") if !archive[:target] tmparchive = false if !archive[:source] && archive[:data] archive[:source] = options[:deploy_dir] + "/.tmp_archive_#{DateTime.now.strftime("%Y%m%d_%H%M%S")}" tmparchive = true data = DanarchyDeploy::Helpers.decode_base64(archive[:data]) write_tmp_archive(archive[:source], data) end puts " > Extracting #{archive[:source]} to #{archive[:target]}" if !File.exist?(archive[:source]) puts " ! Source file not found!: #{archive[:source]}" return false end Dir.exist?(archive[:target]) || FileUtils.mkdir_p(archive[:target]) command = prep_extraction(archive, options) archive_result = DanarchyDeploy::Helpers.run_command(command, options) if archive_result[:stderr] puts ' ! Archive extraction failed!' abort("STDERR:\n#{archive_result[:stderr]}") elsif archive_result[:stdout] puts " |+ Archive extracted: #{archive[:source]}\n" end set_target_ownership(archive[:target], archive[:perms]) if archive[:perms] cleanup_source_archive(archive[:source]) if tmparchive end end
Private Class Methods
cleanup_source_archive(source)
click to toggle source
# File lib/danarchy_deploy/archiver.rb, line 68 def self.cleanup_source_archive(source) File.delete(source) end
prep_extraction(archive, options)
click to toggle source
# File lib/danarchy_deploy/archiver.rb, line 42 def self.prep_extraction(archive, options) file_type = `file #{archive[:source]}` command = 'tar xvf ' if file_type.include?('POSIX tar archive') command = 'tar xvfj ' if file_type.include?('bzip2 compressed data') command = 'tar xvfz ' if file_type.include?('gzip compressed data') command = 'unzip ' if file_type.include?('Zip archive data') if options[:pretend] command = command.gsub(/x/, 't') if command.start_with?('tar') command += '-t ' if command.start_with?('unzip') end command += archive[:source] command += " -C #{archive[:target]}" if command.start_with?('tar') command += " -d #{archive[:target]}" if command.start_with?('unzip') command end
set_target_ownership(target, perms)
click to toggle source
# File lib/danarchy_deploy/archiver.rb, line 64 def self.set_target_ownership(target, perms) FileUtils.chown_R(perms[:uid], perms[:gid], target) end
write_tmp_archive(source, data)
click to toggle source
# File lib/danarchy_deploy/archiver.rb, line 60 def self.write_tmp_archive(source, data) File.write(source, data) end