Class: Inspec::ProfileContext
- Inherits:
-
Object
- Object
- Inspec::ProfileContext
- Defined in:
- lib/inspec/profile_context.rb
Overview
rubocop:disable Metrics/ClassLength
Instance Attribute Summary collapse
-
#attributes ⇒ Object
readonly
Returns the value of attribute attributes.
-
#rules ⇒ Object
readonly
Returns the value of attribute rules.
Instance Method Summary collapse
-
#initialize(profile_id, backend, conf) ⇒ ProfileContext
constructor
A new instance of ProfileContext.
- #load(content, source = nil, line = nil) ⇒ Object
- #load_libraries(libs) ⇒ Object
- #register_attribute(name, options = {}) ⇒ Object
- #register_rule(r) ⇒ Object
- #reload_dsl ⇒ Object
- #set_header(field, val) ⇒ Object
- #unregister_rule(id) ⇒ Object
Constructor Details
#initialize(profile_id, backend, conf) ⇒ ProfileContext
Returns a new instance of ProfileContext.
15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/inspec/profile_context.rb', line 15 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 = {} @require_loader = ::Inspec::RequireLoader.new @attributes = [] reload_dsl end |
Instance Attribute Details
#attributes ⇒ Object (readonly)
Returns the value of attribute attributes.
14 15 16 |
# File 'lib/inspec/profile_context.rb', line 14 def attributes @attributes end |
#rules ⇒ Object (readonly)
Returns the value of attribute rules.
13 14 15 |
# File 'lib/inspec/profile_context.rb', line 13 def rules @rules end |
Instance Method Details
#load(content, source = nil, line = nil) ⇒ Object
59 60 61 62 63 64 65 66 67 68 |
# File 'lib/inspec/profile_context.rb', line 59 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 |
#load_libraries(libs) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/inspec/profile_context.rb', line 36 def load_libraries(libs) lib_prefix = 'libraries' + File::SEPARATOR autoloads = [] libs.each do |content, source, line| path = source if source.start_with?(lib_prefix) path = source.sub(lib_prefix, '') autoloads.push(path) if File.dirname(path) == '.' end @require_loader.add(path, content, source, line) end # load all files directly that are flat inside the libraries folder autoloads.each do |path| next unless path.end_with?('.rb') load(*@require_loader.load(path)) unless @require_loader.loaded?(path) end reload_dsl end |
#register_attribute(name, options = {}) ⇒ Object
89 90 91 92 93 94 95 96 |
# File 'lib/inspec/profile_context.rb', line 89 def register_attribute(name, = {}) # we need to return an attribute object, to allow dermination of default values attr = Attribute.new(name, ) # read value from given gived values attr.value(@conf['attributes'][attr.name]) unless @conf['attributes'].nil? @attributes.push(attr) attr.value end |
#register_rule(r) ⇒ Object
74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/inspec/profile_context.rb', line 74 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]) # add the rule to the registry fid = full_id(Inspec::Rule.profile_id(r), Inspec::Rule.rule_id(r)) existing = @rules[fid] if existing.nil? @rules[fid] = r else Inspec::Rule.merge(existing, r) end end |
#reload_dsl ⇒ Object
30 31 32 33 34 |
# File 'lib/inspec/profile_context.rb', line 30 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, @require_loader) end |
#set_header(field, val) ⇒ Object
98 99 100 |
# File 'lib/inspec/profile_context.rb', line 98 def set_header(field, val) @current_load[field] = val end |
#unregister_rule(id) ⇒ Object
70 71 72 |
# File 'lib/inspec/profile_context.rb', line 70 def unregister_rule(id) @rules.delete(full_id(@profile_id, id)) end |