Method: Inspec::Resource.create_dsl

Defined in:
lib/inspec/resource.rb

.create_dsl(profile_context) ⇒ ResourcesDSL

Creates the inner DSL which includes all resources for creating tests. It is always connected to one target, which is specified via the backend argument.

Parameters:

  • backend (BackendRunner)

    exposing the target to resources

Returns:

  • (ResourcesDSL)


33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/inspec/resource.rb', line 33

def self.create_dsl(profile_context)
  backend = profile_context.backend
  my_registry = profile_context.resource_registry

  Module.new do
    define_method :resource_class do |profile_name, resource_name|
      inner_context = if profile_name == profile_context.profile_id
                        profile_context
                      else
                        profile_context.subcontext_by_name(profile_name)
                      end

      raise ProfileNotFound, "Cannot find profile named: #{profile_name}" if inner_context.nil?
      inner_context.resource_registry[resource_name]
    end

    my_registry.each do |id, r|
      define_method id.to_sym do |*args|
        r.new(backend, id.to_s, *args)
      end
    end

    define_method :inspec do
      backend
    end
  end
end