Sha256: b46ce3f487e3287b6ac50847e91f7468916dc64db75f99262e6734396af99f02
Contents?: true
Size: 1.93 KB
Versions: 3
Compression:
Stored size: 1.93 KB
Contents
require 'zip/zipfilesystem' module VMC::Cli class ZipUtil PACK_EXCLUSION_GLOBS = ['..', '.', '*~', '#*#', '*.log'] class << self def entry_lines(file) contents = nil unless VMC::Cli::Config.nozip contents = `unzip -l #{file} 2> /dev/null` contents = nil if $? != 0 end # Do Ruby version if told to or native version failed unless contents entries = [] Zip::ZipFile.foreach(file) { |zentry| entries << zentry } contents = entries.join("\n") end contents end def unpack(file, dest) unless VMC::Cli::Config.nozip FileUtils.mkdir(dest) `unzip -q #{file} -d #{dest} 2> /dev/null` return unless $? != 0 end # Do Ruby version if told to or native version failed Zip::ZipFile.foreach(file) do |zentry| epath = "#{dest}/#{zentry}" dirname = File.dirname(epath) FileUtils.mkdir_p(dirname) unless File.exists?(dirname) zentry.extract(epath) unless File.exists?(epath) end end def get_files_to_pack(dir) Dir.glob("#{dir}/**/*", File::FNM_DOTMATCH).select do |f| process = true PACK_EXCLUSION_GLOBS.each { |e| process = false if File.fnmatch(e, File.basename(f)) } process && File.exists?(f) end end def pack(dir, zipfile) unless VMC::Cli::Config.nozip excludes = PACK_EXCLUSION_GLOBS.map { |e| "\\#{e}" } excludes = excludes.join(' ') Dir.chdir(dir) do `zip -q -r #{zipfile} . -x #{excludes} 2> /dev/null` return unless $? != 0 end end # Do Ruby version if told to or native version failed Zip::ZipFile::open(zipfile, true) do |zf| get_files_to_pack(dir).each do |f| zf.add(f.sub("#{dir}/",''), f) end end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
vmc-0.2.11 | lib/cli/zip_util.rb |
vmc-0.2.10 | lib/cli/zip_util.rb |
vmc-0.2.6 | lib/cli/zip_util.rb |