module Inspec::Backend
def self.create(config) # rubocop:disable Metrics/AbcSize
-
(TransportBackend)- enriched transport instance
Parameters:
-
config(Hash) -- for the transport backend
def self.create(config) # rubocop:disable Metrics/AbcSize conf = Train.target_config(config) name = Train.validate_backend(conf) transport = Train.create(name, conf) if transport.nil? raise "Can't find transport backend '#{name}'." end connection = transport.connection if connection.nil? raise "Can't connect to transport backend '#{name}'." end # Set caching settings. We always want to enable caching for # the Mock transport for testing. if config[:backend_cache] || config[:backend] == :mock Inspec::Log.debug 'Option backend_cache is enabled' connection.enable_cache(:file) connection.enable_cache(:command) elsif config[:debug_shell] Inspec::Log.debug 'Option backend_cache is disabled' connection.disable_cache(:file) connection.disable_cache(:command) else Inspec::Log.debug 'Option backend_cache is disabled' connection.disable_cache(:file) connection.disable_cache(:command) end cls = Class.new do include Base define_method :backend do connection end Inspec::Resource.registry.each do |id, r| define_method id.to_sym do |*args| r.new(self, id.to_s, *args) end end end cls.new rescue Train::ClientError => e raise "Client error, can't connect to '#{name}' backend: #{e.message}" rescue Train::TransportError => e raise "Transport error, can't connect to '#{name}' backend: #{e.message}" end