2015-08-13 05:45:42 +00:00
|
|
|
# encoding: utf-8
|
|
|
|
require 'zip'
|
|
|
|
require 'vulcano/targets/dir'
|
|
|
|
|
|
|
|
module Vulcano::Targets
|
|
|
|
class ZipHelper
|
2015-09-03 18:43:58 +00:00
|
|
|
def content(input, filter)
|
2015-08-13 05:45:42 +00:00
|
|
|
content = []
|
|
|
|
::Zip::InputStream.open(input) do |io|
|
|
|
|
while (entry = io.get_next_entry)
|
|
|
|
content.push({
|
|
|
|
content: io.read,
|
|
|
|
ref: File::join(input, entry.name),
|
|
|
|
})
|
|
|
|
end
|
|
|
|
end
|
2015-09-03 18:45:37 +00:00
|
|
|
content
|
2015-08-13 05:45:42 +00:00
|
|
|
end
|
|
|
|
|
2015-09-03 18:43:58 +00:00
|
|
|
def structure(input)
|
2015-08-13 05:45:42 +00:00
|
|
|
files = Array.new
|
|
|
|
::Zip::InputStream.open(input) do |io|
|
|
|
|
while (entry = io.get_next_entry)
|
|
|
|
files.push(entry.name)
|
|
|
|
end
|
|
|
|
end
|
2015-09-03 18:45:37 +00:00
|
|
|
files
|
2015-08-13 05:45:42 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
def resolve(path)
|
|
|
|
files = structure(path)
|
|
|
|
helper = DirsHelper.getHandler(files)
|
|
|
|
if helper.nil?
|
2015-09-03 21:24:42 +00:00
|
|
|
fail "Don't know how to handle folder #{path}"
|
2015-08-13 05:45:42 +00:00
|
|
|
end
|
|
|
|
# get all file contents
|
|
|
|
file_handler = Vulcano::Targets.modules['file']
|
|
|
|
test_files = helper.get_filenames(files)
|
|
|
|
content(path, test_files)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|