Class: Inspec::FileProvider

Inherits:
Object
  • Object
show all
Defined in:
lib/inspec/file_provider.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(_path) ⇒ FileProvider

Returns a new instance of FileProvider.



37
# File 'lib/inspec/file_provider.rb', line 37

def initialize(_path); end

Class Method Details

.for_path(path) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/inspec/file_provider.rb', line 10

def self.for_path(path)
  raise "Profile or dependency path not resolved." if path.nil?

  if path.is_a?(Hash) && !path.key?(:gem)
    MockProvider.new(path)
  elsif path.is_a?(Hash) && path.key?(:gem)
    GemProvider.new(path)
  elsif File.directory?(path)
    DirProvider.new(path)
  elsif File.exist?(path) && path.end_with?(".tar.gz", "tgz")
    TarProvider.new(path)
  elsif File.exist?(path) && path.end_with?(".zip")
    ZipProvider.new(path)
  elsif File.exist?(path) && path.end_with?(".iaf")
    iaf_file = IafFile.new(path)
    if iaf_file.valid?
      IafProvider.new(path)
    else
      raise Inspec::InvalidProfileSignature, "Profile signature is invalid."
    end
  elsif File.exist?(path)
    DirProvider.new(path)
  else
    raise "No file provider for the provided path: #{path}"
  end
end

Instance Method Details

#binread(file) ⇒ Object

Provide a method for reading binary contents from a file. It will default to #read if not defined. For most streams that implement it, it will be the same. For some special cases, it will add change the way in which encoding of the returned data structure is handled. Does not work with alias nor alias_method.



60
61
62
# File 'lib/inspec/file_provider.rb', line 60

def binread(file)
  read(file)
end

#filesArray[String]

List all files that are offered.

Returns:

  • (Array[String])

    list of file paths that are included



42
43
44
# File 'lib/inspec/file_provider.rb', line 42

def files
  raise "Fetcher #{self} does not implement `files()`. This is required."
end

#read(_file) ⇒ String

Read the contents of a file. This will typically refer to a text file reading a string.

Parameters:

  • _file (String)

    path of the file to be read

Returns:

  • (String)

    contents of the file described



51
52
53
# File 'lib/inspec/file_provider.rb', line 51

def read(_file)
  raise "#{self} does not implement `read(...)`. This is required."
end

#relative_providerObject



64
65
66
# File 'lib/inspec/file_provider.rb', line 64

def relative_provider
  RelativeFileProvider.new(self)
end