module Specinfra::Helper::Os

Public Instance Methods

os() click to toggle source
# File lib/specinfra/helper/os.rb, line 6
def os
  property[:os] = {} if ! property[:os]
  if ! property[:os].include?(:family)
    property[:os] = detect_os
  end
  property[:os]
end

Private Instance Methods

detect_os() click to toggle source
# File lib/specinfra/helper/os.rb, line 15
def detect_os
  return Specinfra.configuration.os if Specinfra.configuration.os

  backend = Specinfra.configuration.backend
  if backend == :cmd || backend == :winrm
    return { :family => 'windows', :release => nil, :arch => nil }
  end

  Specinfra::Helper::DetectOs.subclasses.each do |c|
    res = c.detect
    if res
      res[:arch] ||= Specinfra.backend.run_command('uname -m').stdout.strip
      return res
    end
  end
  raise NotImplementedError, "Specinfra failed os detection."
end