Class: Inspec::ProfileContext

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(profile_id, backend, profile_registry = {}, only_ifs = []) ⇒ ProfileContext

Returns a new instance of ProfileContext.



12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/inspec/profile_context.rb', line 12

def initialize(profile_id, backend, profile_registry = {}, only_ifs = [])
  if backend.nil?
    fail 'ProfileContext is initiated with a backend == nil. ' \
         'This is a backend error which must be fixed upstream.'
  end

  @profile_id = profile_id
  @rules = profile_registry
  @only_ifs = only_ifs
  @backend = backend

  reload_dsl
end

Instance Attribute Details

#only_ifsObject (readonly)

Returns the value of attribute only_ifs.



11
12
13
# File 'lib/inspec/profile_context.rb', line 11

def only_ifs
  @only_ifs
end

#rulesObject (readonly)

Returns the value of attribute rules.



11
12
13
# File 'lib/inspec/profile_context.rb', line 11

def rules
  @rules
end

Instance Method Details

#load(content, source = nil, line = nil) ⇒ Object



32
33
34
35
# File 'lib/inspec/profile_context.rb', line 32

def load(content, source = nil, line = nil)
  @current_load = { file: source }
  @profile_context.instance_eval(content, source || 'unknown', line || 1)
end

#register_rule(r) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/inspec/profile_context.rb', line 42

def register_rule(r)
  # get the full ID
  r.instance_variable_set(:@__file, @current_load[:file])
  r.instance_variable_set(:@__group_title, @current_load[:title])
  full_id = Inspec::Rule.full_id(@profile_id, r)
  if full_id.nil?
    # TODO: error
    return
  end

  # add the rule to the registry
  existing = @rules[full_id]
  if existing.nil?
    @rules[full_id] = r
  else
    Inspec::Rule.merge(existing, r)
  end
end

#reload_dslObject



26
27
28
29
30
# File 'lib/inspec/profile_context.rb', line 26

def reload_dsl
  resources_dsl = Inspec::Resource.create_dsl(@backend)
  ctx = create_context(resources_dsl, rule_context(resources_dsl))
  @profile_context = ctx.new
end

#set_header(field, val) ⇒ Object



61
62
63
# File 'lib/inspec/profile_context.rb', line 61

def set_header(field, val)
  @current_load[field] = val
end

#unregister_rule(id) ⇒ Object



37
38
39
40
# File 'lib/inspec/profile_context.rb', line 37

def unregister_rule(id)
  full_id = Inspec::Rule.full_id(@profile_id, id)
  @rules[full_id] = nil
end