Class: Inspec::ProfileContext

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

Overview

rubocop:disable Metrics/ClassLength

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(profile_id, backend, conf) ⇒ 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, conf)
  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
  @backend = backend
  @conf = conf.dup
  @rules = {}

  reload_dsl
end

Instance Attribute Details

#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
36
37
38
39
40
41
# File 'lib/inspec/profile_context.rb', line 32

def load(content, source = nil, line = nil)
  @current_load = { file: source }
  if content.is_a? Proc
    @profile_context.instance_eval(&content)
  elsif source.nil? && line.nil?
    @profile_context.instance_eval(content)
  else
    @profile_context.instance_eval(content, source || 'unknown', line || 1)
  end
end

#register_rule(r) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/inspec/profile_context.rb', line 48

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(@backend, @conf)
end

#set_header(field, val) ⇒ Object



67
68
69
# File 'lib/inspec/profile_context.rb', line 67

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

#unregister_rule(id) ⇒ Object



43
44
45
46
# File 'lib/inspec/profile_context.rb', line 43

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