Class: Rubypack::Compressor
- Inherits:
-
Object
- Object
- Rubypack::Compressor
- Defined in:
- lib/rubypack/compressor.rb
Instance Method Summary collapse
- #compress!(path:, output_filename:, overwrite:) ⇒ Object
- #decompress!(filename:, directory:) ⇒ Object
-
#initialize(format:, output:) ⇒ Compressor
constructor
A new instance of Compressor.
Constructor Details
#initialize(format:, output:) ⇒ Compressor
Returns a new instance of Compressor.
7 8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/rubypack/compressor.rb', line 7 def initialize(format:, output:) @format = format @output = output @compressor = case format when 'tgz' Compressors::TGZ.new when 'zip' Compressors::ZIP.new else fail("Unknown compressor: #{format}") end end |
Instance Method Details
#compress!(path:, output_filename:, overwrite:) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/rubypack/compressor.rb', line 21 def compress!(path:, output_filename:, overwrite:) fail("File already exists: #{output_filename}") if !overwrite && File.exists?(output_filename) fail("Directory not found: #{path}") unless File.directory?(path) output_directory = File.dirname(output_filename) fail("Directory not found: #{output_directory}") unless File.directory?(output_directory) begin filename = File.(output_filename + @compressor.extension) Dir.chdir(path) do @compressor.compress(filename: filename) do |out| while line = out.gets do @output.verbose(' >', line) end end end end @output.status(' File created: ', filename) rescue => exception @output.error(exception.) fail('Compression canceled') end |
#decompress!(filename:, directory:) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/rubypack/compressor.rb', line 44 def decompress!(filename:, directory:) fail("File not found: #{filename}") unless File.exists?(filename) fail("Directory already exists: #{directory}") if File.directory?(directory) FileUtils.mkdir_p(directory) begin full_filename = File.(filename) Dir.chdir(directory) do @compressor.decompress(filename: full_filename) do |out| while line = out.gets do @output.verbose(' >', line) end end end end @output.status(' Directory created: ', directory) rescue => exception @output.error(exception.) fail('Decompression canceled') end |