class TotalCompressor::BaseCompressor
Constants
- FILE
- HASH_TYPE
- HOME
- MSG
- PROJECT
- TEMP_FOLDER
- TEST
- TEST_FILE
- TEST_FOLDER
- TEST_FOLDER_UNCOMPRESSED
- TEXT_FILE
- TYPE
Public Instance Methods
back_to_last_dir()
click to toggle source
# File lib/total_compressor/compressors/base_compressor.rb, line 56 def back_to_last_dir chdir(@current_dir) end
chdir(folder)
click to toggle source
# File lib/total_compressor/compressors/base_compressor.rb, line 64 def chdir(folder) if File.directory?(folder) Dir.chdir(folder) true else false end end
compress(path, format)
click to toggle source
# File lib/total_compressor/compressors/base_compressor.rb, line 121 def compress(path, format) save_current_dir result = { :success => false } folder = get_folder(path) return result unless chdir(folder) begin file = get_file(path) archive = file + ".#{format}" if file message = if File.directory?(path) %x[#{TYPE[format]['tool']} #{TYPE[format]['compress_folder']} #{archive} #{file}] else %x[#{TYPE[format]['tool']} #{TYPE[format]['compress_file']} #{archive} #{file}] end if message && message.match(TYPE[format]['success_message']) result[:success] = true result[:file] = "#{folder}/#{archive}" else result[:error] = message end else result[:error] = BaseCompressor::MSG[:incorrect] end rescue result[:error] = BaseCompressor::MSG[:exception] ensure back_to_last_dir end return_result(result) end
decompress(path, format)
click to toggle source
# File lib/total_compressor/compressors/base_compressor.rb, line 154 def decompress(path, format) save_current_dir result = { :success => false, :files => [] } folder = get_folder(path) Dir.chdir(folder) begin file = get_file(path) previous_entries = Dir.entries(Dir.pwd) %x[#{TYPE[format]['tool']} #{TYPE[format]['decompress']} #{file}] new_entries = Dir.entries(Dir.pwd) uncompressed_entries = new_entries - previous_entries uncompressed_entries.each{|entry| result[:files] << "#{folder}/#{entry}" } result[:success] = true rescue result[:error] = BaseCompressor::MSG[:exception] ensure back_to_last_dir end return_result(result) end
get_file(path)
click to toggle source
# File lib/total_compressor/compressors/base_compressor.rb, line 73 def get_file(path) file = path.split('/')[-1] file ? file : path end
get_folder(path)
click to toggle source
# File lib/total_compressor/compressors/base_compressor.rb, line 60 def get_folder(path) path.split('/')[0..-2].join('/') end
get_format()
click to toggle source
# File lib/total_compressor/compressors/base_compressor.rb, line 178 def get_format self.class.to_s.split('::').last.downcase[1..-1] end
prepare_test_files()
click to toggle source
# File lib/total_compressor/compressors/base_compressor.rb, line 78 def prepare_test_files FileUtils.rm_rf(TEMP_FOLDER, secure: true) Dir.mkdir(TEMP_FOLDER) Dir.mkdir(TEST_FOLDER) Dir.mkdir(TEST_FOLDER_UNCOMPRESSED) FileUtils.cp("#{FILE}", TEMP_FOLDER) FileUtils.cp("#{FILE}", TEST_FOLDER) chdir(HOME) end
return_result(result)
click to toggle source
# File lib/total_compressor/compressors/base_compressor.rb, line 182 def return_result(result) ap result unless result[:success] result end
save_current_dir()
click to toggle source
# File lib/total_compressor/compressors/base_compressor.rb, line 52 def save_current_dir @current_dir = Dir.pwd end
skip_test?(format, test_set)
click to toggle source
# File lib/total_compressor/compressors/base_compressor.rb, line 117 def skip_test?(format, test_set) true if File.directory?(test_set) && format == 'gzip' end
test(format)
click to toggle source
# File lib/total_compressor/compressors/base_compressor.rb, line 93 def test(format) test_sets = [ TotalCompressor::BaseCompressor::TEST_FILE, TotalCompressor::BaseCompressor::TEST_FOLDER ] result = { :success => true } prepare_test_files test_sets.each do |test_set| next if skip_test?(format, test_set) res = eval("TotalCompressor::T#{format.capitalize}.new.compress(\'#{test_set}\')") if res[:success] FileUtils.cp("#{res[:file]}", TEST_FOLDER_UNCOMPRESSED) res = eval("TotalCompressor::T#{format.capitalize}.new.decompress(\'#{TEST_FOLDER_UNCOMPRESSED}/#{res[:file].split('/').last}\')") result[:success] = false unless res[:success] else result[:success] = false end end utilize_test_files result[:success] ? 'Success' : 'Failure' end
utilize_test_files()
click to toggle source
# File lib/total_compressor/compressors/base_compressor.rb, line 88 def utilize_test_files FileUtils.rm_rf("#{TEMP_FOLDER}", secure: true) chdir(PROJECT) end