mirror of
https://github.com/inspec/inspec
synced 2024-12-24 20:13:16 +00:00
07cb7efe36
Signed-off-by: Dominik Richter <dominik.richter@gmail.com>
44 lines
1,003 B
Ruby
44 lines
1,003 B
Ruby
# encoding: utf-8
|
|
require 'zip'
|
|
require 'vulcano/targets/dir'
|
|
|
|
module Vulcano::Targets
|
|
class ZipHelper
|
|
def content(input, _filter)
|
|
content = []
|
|
::Zip::InputStream.open(input) do |io|
|
|
while (entry = io.get_next_entry)
|
|
h = {
|
|
content: io.read,
|
|
ref: File.join(input, entry.name),
|
|
}
|
|
content.push(h)
|
|
end
|
|
end
|
|
content
|
|
end
|
|
|
|
def structure(input)
|
|
files = []
|
|
::Zip::InputStream.open(input) do |io|
|
|
while (entry = io.get_next_entry)
|
|
files.push(entry.name)
|
|
end
|
|
end
|
|
files
|
|
end
|
|
|
|
def resolve(path)
|
|
files = structure(path)
|
|
helper = DirsHelper.get_handler(files)
|
|
if helper.nil?
|
|
fail "Don't know how to handle folder #{path}"
|
|
end
|
|
# get all file contents
|
|
# @TODO
|
|
_file_handler = Vulcano::Targets.modules['file']
|
|
test_files = helper.get_filenames(files)
|
|
content(path, test_files)
|
|
end
|
|
end
|
|
end
|