lib/inspec/backend.rb in inspec-1.51.15 vs lib/inspec/backend.rb in inspec-1.51.18

- old
+ new

@@ -1,92 +1,92 @@ -# encoding: utf-8 -# copyright: 2015, Dominik Richter -# author: Dominik Richter -# author: Christoph Hartmann - -require 'train' - -module Inspec - module Backend - module Base - attr_accessor :profile - - # Provide a shorthand to retrieve the inspec version from within a profile - # - # @return [String] inspec version - def version - Inspec::VERSION - end - - # Determine whether the connection/transport is a local connection - # Useful for resources to modify behavior as necessary, such as using - # the Ruby stdlib for a better experience. - def local_transport? - return false unless defined?(Train::Transports::Local) - backend.is_a?(Train::Transports::Local::Connection) - end - - # Ruby internal for printing a nice name for this class - def to_s - 'Inspec::Backend::Class' - end - - # Ruby internal for pretty-printing a summary for this class - def inspect - "Inspec::Backend::Class @transport=#{backend.class}" - end - end - - # Create the transport backend with aggregated resources. - # - # @param [Hash] config for the transport backend - # @return [TransportBackend] enriched transport instance - 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(: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 - end -end +# encoding: utf-8 +# copyright: 2015, Dominik Richter +# author: Dominik Richter +# author: Christoph Hartmann + +require 'train' + +module Inspec + module Backend + module Base + attr_accessor :profile + + # Provide a shorthand to retrieve the inspec version from within a profile + # + # @return [String] inspec version + def version + Inspec::VERSION + end + + # Determine whether the connection/transport is a local connection + # Useful for resources to modify behavior as necessary, such as using + # the Ruby stdlib for a better experience. + def local_transport? + return false unless defined?(Train::Transports::Local) + backend.is_a?(Train::Transports::Local::Connection) + end + + # Ruby internal for printing a nice name for this class + def to_s + 'Inspec::Backend::Class' + end + + # Ruby internal for pretty-printing a summary for this class + def inspect + "Inspec::Backend::Class @transport=#{backend.class}" + end + end + + # Create the transport backend with aggregated resources. + # + # @param [Hash] config for the transport backend + # @return [TransportBackend] enriched transport instance + 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(: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 + end +end