Sha256: d06020acdaf219881bf4778749161f50190b27af4174bea33cb281035be999cb

Contents?: true

Size: 1.17 KB

Versions: 21

Compression:

Stored size: 1.17 KB

Contents

require 'singleton'
require 'specinfra/command_result'

module Specinfra
  module Backend
    class Base
      def self.instance
        @instance ||= self.new
      end

      def self.clear
        @instance = nil
      end

      def initialize(config = {})
        @config = config
      end

      def get_config(key)
        @config[key] || Specinfra.configuration.send(key)
      end

      def set_config(key, value)
        @config[key] = value
      end

      def os_info
        return @os_info if @os_info

        Specinfra::Helper::DetectOs.subclasses.each do |klass|
          if @os_info = klass.new(self).detect
            @os_info[:arch] ||= self.run_command('uname -m').stdout.strip
            return @os_info
          end
        end

        raise NotImplementedError, 'OS detection failed.'
      end

      def command
        CommandFactory.new(os_info)
      end

      def host_inventory
        @inventory ||= HostInventory.new(self)
      end

      def set_example(e)
        @example = e
      end

      def stdout_handler=(block)
        @stdout_handler = block
      end

      def stderr_handler=(block)
        @stderr_handler = block
      end
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
specinfra-2.77.1 lib/specinfra/backend/base.rb
specinfra-2.77.0 lib/specinfra/backend/base.rb
specinfra-2.76.9 lib/specinfra/backend/base.rb
specinfra-2.76.8 lib/specinfra/backend/base.rb
specinfra-2.76.7 lib/specinfra/backend/base.rb
specinfra-2.76.6 lib/specinfra/backend/base.rb
specinfra-2.76.5 lib/specinfra/backend/base.rb
specinfra-2.76.4 lib/specinfra/backend/base.rb
specinfra-2.76.3 lib/specinfra/backend/base.rb
specinfra-2.76.2 lib/specinfra/backend/base.rb
specinfra-2.76.1 lib/specinfra/backend/base.rb
specinfra-2.76.0 lib/specinfra/backend/base.rb
specinfra-2.75.1 lib/specinfra/backend/base.rb
specinfra-2.75.0 lib/specinfra/backend/base.rb
specinfra-2.74.0 lib/specinfra/backend/base.rb
specinfra-2.73.4 lib/specinfra/backend/base.rb
specinfra-2.73.3 lib/specinfra/backend/base.rb
specinfra-2.73.2 lib/specinfra/backend/base.rb
specinfra-2.73.1 lib/specinfra/backend/base.rb
specinfra-2.73.0 lib/specinfra/backend/base.rb