mirror of
https://github.com/inspec/inspec
synced 2024-11-27 23:20:33 +00:00
54 lines
1.3 KiB
Ruby
54 lines
1.3 KiB
Ruby
# encoding: utf-8
|
|
# author: Dominik Richter
|
|
# author: Christoph Hartmann
|
|
|
|
module Vulcano
|
|
module Plugins
|
|
class Resource
|
|
def self.name(name)
|
|
Vulcano::Plugins::Resource.__register(name, self)
|
|
end
|
|
|
|
def self.__register(name, obj)
|
|
# rubocop:disable Lint/NestedMethodDefinition
|
|
cl = Class.new(obj) do
|
|
# add some common methods
|
|
include Vulcano::Plugins::ResourceCommon
|
|
def initialize(backend, name, *args)
|
|
# attach the backend to this instance
|
|
@__backend_runner__ = backend
|
|
@__resource_name__ = name
|
|
# call the resource initializer
|
|
super(*args)
|
|
end
|
|
|
|
def vulcano
|
|
@__backend_runner__
|
|
end
|
|
end
|
|
# rubocop:enable Lint/NestedMethodDefinition
|
|
|
|
# add the resource to the registry by name
|
|
Vulcano::Resource.registry[name] = cl
|
|
end
|
|
|
|
# Define methods which are available to all resources
|
|
# and may be overwritten.
|
|
|
|
# Print the name of the resource
|
|
def to_s
|
|
@__resource_name__
|
|
end
|
|
end
|
|
|
|
module ResourceCommon
|
|
def resource_skipped
|
|
@resource_skipped
|
|
end
|
|
|
|
def skip_resource(message)
|
|
@resource_skipped = message
|
|
end
|
|
end
|
|
end
|
|
end
|