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.
-
#profile_id ⇒ Object
readonly
Returns the value of attribute profile_id.
-
#rules ⇒ Object
readonly
Returns the value of attribute rules.
Class Method Summary collapse
Instance Method Summary collapse
- #add_subcontext(context) ⇒ Object
- #all_rules ⇒ Object
-
#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.
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/inspec/profile_context.rb', line 18 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 = {} @subcontexts = [] @dependencies = {} @dependencies = conf['profile'].locked_dependencies unless conf['profile'].nil? @require_loader = ::Inspec::RequireLoader.new @attributes = [] reload_dsl end |
Instance Attribute Details
#attributes ⇒ Object (readonly)
Returns the value of attribute attributes.
17 18 19 |
# File 'lib/inspec/profile_context.rb', line 17 def attributes @attributes end |
#profile_id ⇒ Object (readonly)
Returns the value of attribute profile_id.
17 18 19 |
# File 'lib/inspec/profile_context.rb', line 17 def profile_id @profile_id end |
#rules ⇒ Object (readonly)
Returns the value of attribute rules.
17 18 19 |
# File 'lib/inspec/profile_context.rb', line 17 def rules @rules end |
Class Method Details
.for_profile(profile, backend) ⇒ Object
13 14 15 |
# File 'lib/inspec/profile_context.rb', line 13 def self.for_profile(profile, backend) new(profile.name, backend, { 'profile' => profile }) end |
Instance Method Details
#add_subcontext(context) ⇒ Object
47 48 49 |
# File 'lib/inspec/profile_context.rb', line 47 def add_subcontext(context) @subcontexts << context end |
#all_rules ⇒ Object
41 42 43 44 45 |
# File 'lib/inspec/profile_context.rb', line 41 def all_rules ret = @rules.values ret += @subcontexts.map(&:all_rules).flatten ret end |
#load(content, source = nil, line = nil) ⇒ Object
74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/inspec/profile_context.rb', line 74 def load(content, source = nil, line = nil) Inspec::Log.debug("Loading #{source || '<anonymous content>'} into #{self}") @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
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/inspec/profile_context.rb', line 51 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
105 106 107 108 109 110 111 112 |
# File 'lib/inspec/profile_context.rb', line 105 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
90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/inspec/profile_context.rb', line 90 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
35 36 37 38 39 |
# File 'lib/inspec/profile_context.rb', line 35 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, @dependencies, @require_loader) end |
#set_header(field, val) ⇒ Object
114 115 116 |
# File 'lib/inspec/profile_context.rb', line 114 def set_header(field, val) @current_load[field] = val end |
#unregister_rule(id) ⇒ Object
86 87 88 |
# File 'lib/inspec/profile_context.rb', line 86 def unregister_rule(id) @rules.delete(full_id(@profile_id, id)) end |