Class: Inspec::ZipProvider
- Inherits:
-
FileProvider
- Object
- FileProvider
- Inspec::ZipProvider
- Defined in:
- lib/inspec/file_provider.rb
Overview
class DirProvider
Instance Attribute Summary collapse
-
#files ⇒ Object
readonly
Returns the value of attribute files.
Instance Method Summary collapse
- #extract(destination_path = ".") ⇒ Object
-
#initialize(path) ⇒ ZipProvider
constructor
A new instance of ZipProvider.
- #read(file) ⇒ Object
Methods inherited from FileProvider
#binread, for_path, #relative_provider
Constructor Details
#initialize(path) ⇒ ZipProvider
Returns a new instance of ZipProvider.
105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/inspec/file_provider.rb', line 105 def initialize(path) @path = path @contents = {} @files = [] walk_zip(@path) do |io| while (entry = io.get_next_entry) name = entry.name.sub(%r{/+$}, "") @files.push(name) unless name.empty? || name.squeeze("/") =~ %r{\.{2}(?:/|\z)} end end end |
Instance Attribute Details
#files ⇒ Object (readonly)
Returns the value of attribute files.
103 104 105 |
# File 'lib/inspec/file_provider.rb', line 103 def files @files end |
Instance Method Details
#extract(destination_path = ".") ⇒ Object
117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
# File 'lib/inspec/file_provider.rb', line 117 def extract(destination_path = ".") FileUtils.mkdir_p(destination_path) Zip::File.open(@path) do |archive| archive.each do |file| final_path = File.join(destination_path, file.name) # This removes the top level directory (and any other files) to ensure # extracted files do not conflict. FileUtils.remove_entry(final_path) if File.exist?(final_path) archive.extract(file, final_path) end end end |
#read(file) ⇒ Object
133 134 135 136 |
# File 'lib/inspec/file_provider.rb', line 133 def read(file) # TODO: this is inefficient @contents[file] ||= read_from_zip(file) end |