Class: Compliance::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/bundles/inspec-compliance/configuration.rb

Overview

stores configuration on local filesystem

Instance Method Summary collapse

Constructor Details

#initializeConfiguration

Returns a new instance of Configuration.



8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/bundles/inspec-compliance/configuration.rb', line 8

def initialize
  @config_path = File.join(Dir.home, '.inspec', 'compliance')
  # ensure the directory is available
  unless File.directory?(@config_path)
    FileUtils.mkdir_p(@config_path)
  end
  # set config file path
  @config_file = File.join(@config_path, '/config.json')
  @config = {}

  # load the data
  get
end

Instance Method Details

#[](key) ⇒ Object

direct access to config



23
24
25
# File 'lib/bundles/inspec-compliance/configuration.rb', line 23

def [](key)
  @config[key]
end

#[]=(key, value) ⇒ Object



27
28
29
# File 'lib/bundles/inspec-compliance/configuration.rb', line 27

def []=(key, value)
  @config[key] = value
end

#destroyObject

deletes data



49
50
51
52
53
54
55
# File 'lib/bundles/inspec-compliance/configuration.rb', line 49

def destroy
  if File.exist?(@config_file)
    File.delete(@config_file)
  else
    true
  end
end

#getObject

return the json data



32
33
34
35
36
37
38
# File 'lib/bundles/inspec-compliance/configuration.rb', line 32

def get
  if File.exist?(@config_file)
    file = File.read(@config_file)
    @config = JSON.parse(file)
  end
  @config
end

#legacy_check!(feature) ⇒ Object

exit 1 if the version of compliance that we’re working with doesn’t support odic



73
74
75
76
77
78
79
# File 'lib/bundles/inspec-compliance/configuration.rb', line 73

def legacy_check!(feature)
  if !supported?(feature)
    puts "This feature (#{feature}) is not available for legacy installations."
    puts 'Please upgrade to a recent version of Chef Compliance.'
    exit 1
  end
end

#storeObject

stores a hash to json



41
42
43
44
45
46
# File 'lib/bundles/inspec-compliance/configuration.rb', line 41

def store
  File.open(@config_file, 'w') do |f|
    f.chmod(0600)
    f.write(@config.to_json)
  end
end

#supported?(feature) ⇒ Boolean

return if the (stored) api version does not support a certain feature

Returns:

  • (Boolean)


58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/bundles/inspec-compliance/configuration.rb', line 58

def supported?(feature)
  sup = version_with_support(feature)

  # we do not know the version, therefore we do not know if its possible to use the feature
  return if self['version'].nil? || self['version']['version'].nil?

  if sup.is_a?(Array)
    Gem::Version.new(self['version']['version']) >= sup[0] &&
      Gem::Version.new(self['version']['version']) < sup[1]
  else
    Gem::Version.new(self['version']['version']) >= sup
  end
end