class RuleRepositoryLoader
This captures logic for instantiating the RuleRepo implementations and merging their rule registries. This was baked into CustomRuleLoader
but broken out for cfn_nag_rules to use as well
Public Instance Methods
merge(rule_registry, rule_repository_definitions)
click to toggle source
# File lib/cfn-nag/rule_repository_loader.rb, line 12 def merge(rule_registry, rule_repository_definitions) rule_repository_definitions.each do |rule_repository_definition| rule_registry.merge! rule_repository(rule_repository_definition).discover_rules end rule_registry end
Private Instance Methods
class_from_name(name)
click to toggle source
# File lib/cfn-nag/rule_repository_loader.rb, line 43 def class_from_name(name) Object.const_get name rescue NameError raise RuleRepoException.new(msg: "Malformed repo definition: repo_class_name: #{name} not loaded") end
rule_repository(rule_repository_definition_str)
click to toggle source
# File lib/cfn-nag/rule_repository_loader.rb, line 29 def rule_repository(rule_repository_definition_str) rule_repository_definition = YAML.safe_load rule_repository_definition_str unless rule_repository_definition['repo_class_name'] raise RuleRepoException.new(msg: 'Malformed repo definition: missing repo_class_name') end repo_class = class_from_name(rule_repository_definition['repo_class_name']) if rule_repository_definition['repo_arguments'].is_a?(Hash) repo_class.new(**to_sym_keys(rule_repository_definition['repo_arguments'])) else repo_class.new end end
to_sym_keys(hash)
click to toggle source
# File lib/cfn-nag/rule_repository_loader.rb, line 21 def to_sym_keys(hash) sym_hash = {} hash.each do |k, v| sym_hash[k.to_sym] = v end sym_hash end