Class: CompareCompressors::SevenZipCompressor

Inherits:
Compressor
  • Object
show all
Defined in:
lib/compare_compressors/compressors/seven_zip_compressor.rb

Overview

Compress with ‘7z`.

Instance Method Summary collapse

Methods inherited from Compressor

#evaluate

Instance Method Details

#compression_command(target, level) ⇒ Object



35
36
37
# File 'lib/compare_compressors/compressors/seven_zip_compressor.rb', line 35

def compression_command(target, level)
  ['7zr', 'a', "-mx=#{level}", output_name(target), target]
end

#decompression_command(target) ⇒ Object



39
40
41
# File 'lib/compare_compressors/compressors/seven_zip_compressor.rb', line 39

def decompression_command(target)
  ['7zr', 'x', "-o#{File.dirname(target)}", output_name(target)]
end

#display_nameObject



12
13
14
# File 'lib/compare_compressors/compressors/seven_zip_compressor.rb', line 12

def display_name
  '7z'
end

#extensionObject



16
17
18
# File 'lib/compare_compressors/compressors/seven_zip_compressor.rb', line 16

def extension
  '7z'
end

#levelsObject

Based on share/doc/p7zip/DOC/MANUAL/cmdline/switches/method.htm Level 0 is no compression, so we exclude it.



22
23
24
# File 'lib/compare_compressors/compressors/seven_zip_compressor.rb', line 22

def levels
  [1, 3, 5, 7, 9]
end

#nameObject



8
9
10
# File 'lib/compare_compressors/compressors/seven_zip_compressor.rb', line 8

def name
  'seven_zip'
end

#versionObject



26
27
28
29
30
31
32
33
# File 'lib/compare_compressors/compressors/seven_zip_compressor.rb', line 26

def version
  status, _times, out, _err = run('7zr', '--help')
  return nil unless status.zero?
  version_line = out.strip.lines.first.chomp
  raise "bad version line #{version_line}" unless
    version_line =~ /([0-9.]+)[\s:]+Copyright/
  Regexp.last_match(1)
end