Sha256: b22dc6b62a78147cd9543affad3a66ccef2dc69794c9883e4bd8272b6ad0f96f

Contents?: true

Size: 1.46 KB

Versions: 25

Compression:

Stored size: 1.46 KB

Contents

# == PlatformManager::LSB
#
# A PlatformManager driver for LSB (Linux Standards Base) systems. The
# platform doesn't actually need to be Linux, but simply has to provide an
# <tt>lsb_release</tt> command.
class AutomateIt::PlatformManager::LSB < AutomateIt::PlatformManager::Uname
  LSB_RELEASE = "lsb_release"

  depends_on :programs => [LSB_RELEASE]

  def suitability(method, *args) # :nodoc:
    # Level must be greater than Uname and Debian
    return available? ? 4 : 0
  end

  def setup(opts={}) # :nodoc:
    super(opts) # Rely on Uname to set :os and :arch
    @struct[:distro]  ||= @@struct_cache[:distro]
    @struct[:release] ||= @@struct_cache[:release]
    if available?
      unless @struct[:distro] and @struct[:release]
        data = _read_lsb_release_output # SLOW 0.2s
        begin
          yaml = YAML::load(data)
          @struct[:distro]  ||= @@struct_cache[:distro]  ||= yaml["Distributor ID"].to_s.downcase
          @struct[:release] ||= @@struct_cache[:release] ||= yaml["Release"].to_s.downcase
        rescue NoMethodError, IndexError, ArgumentError => e
          raise ArgumentError.new("invalid YAML output from '#{LSB_RELEASE}': #{data.inspect}")
        end
      end
    end
  end

  def _read_lsb_release_output
    # Do NOT use 'lsb_release -a' because this takes a few seconds. Telling
    # 'lsb_release' which fields we want makes it much faster.
    return `"#{LSB_RELEASE}" --release --id`.gsub(/\t/, " ")
  end
  private :_read_lsb_release_output
end

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
automateit-0.70923 lib/automateit/platform_manager/lsb.rb
automateit-0.70928 lib/automateit/platform_manager/lsb.rb
automateit-0.70930 lib/automateit/platform_manager/lsb.rb
automateit-0.71003 lib/automateit/platform_manager/lsb.rb
automateit-0.71021 lib/automateit/platform_manager/lsb.rb
automateit-0.71031.1 lib/automateit/platform_manager/lsb.rb
automateit-0.71031.2 lib/automateit/platform_manager/lsb.rb
automateit-0.71017 lib/automateit/platform_manager/lsb.rb
automateit-0.71012 lib/automateit/platform_manager/lsb.rb
automateit-0.71030 lib/automateit/platform_manager/lsb.rb
automateit-0.71006 lib/automateit/platform_manager/lsb.rb
automateit-0.71102 lib/automateit/platform_manager/lsb.rb
automateit-0.71101 lib/automateit/platform_manager/lsb.rb
automateit-0.71101.1 lib/automateit/platform_manager/lsb.rb
automateit-0.71101.2 lib/automateit/platform_manager/lsb.rb
automateit-0.71103 lib/automateit/platform_manager/lsb.rb
automateit-0.71031 lib/automateit/platform_manager/lsb.rb
automateit-0.71220 lib/automateit/platform_manager/lsb.rb
automateit-0.71104 lib/automateit/platform_manager/lsb.rb
automateit-0.71221 lib/automateit/platform_manager/lsb.rb