Sha256: 8d17a43b776c673b0c58c3f50386d4becd4c78ace64b87c9fa8a218afec0e16c

Contents?: true

Size: 1.88 KB

Versions: 27

Compression:

Stored size: 1.88 KB

Contents

module Windows::Pkg
  include Beaker::CommandFactory

  def check_for_command(name)
    result = exec(Beaker::Command.new("which #{name}"), :accept_all_exit_codes => true)
    result.exit_code == 0
  end

  def check_for_package(name)
    result = exec(Beaker::Command.new("cygcheck #{name}"), :accept_all_exit_codes => true)
    result.exit_code == 0
  end

  def install_package(name, cmdline_args = '')
    cygwin = ""
    rootdir = ""

    arch = identify_windows_architecture

    if arch == '64'
      rootdir = "c:\\\\cygwin64"
      cygwin = "setup-x86_64.exe"
    else #32 bit version
      rootdir = "c:\\\\cygwin"
      cygwin = "setup-x86.exe"
    end

    if not check_for_command(cygwin)
      execute("curl --retry 5 http://cygwin.com/#{cygwin} -o /cygdrive/c/Windows/System32/#{cygwin}")
    end
    execute("#{cygwin} -q -n -N -d -R #{cmdline_args} #{rootdir} -s http://cygwin.osuosl.org -P #{name}")
  end

  def uninstall_package(name, cmdline_args = '')
    raise "Package #{name} cannot be uninstalled on #{self}"
  end

  #Examine the host system to determine the architecture, overrides default host determine_if_x86_64 so that wmic is used
  #@return [Boolean] true if x86_64, false otherwise
  def determine_if_x86_64
    (identify_windows_architecture =~ /64/) == 0
  end

  private

  # @api private
  def identify_windows_architecture
    arch = nil
    execute("echo '' | wmic os get osarchitecture", :accept_all_exit_codes => true) do |result|
      arch = if result.exit_code == 0
        result.stdout =~ /64/ ? '64' : '32'
      else
        identify_windows_architecture_from_os_name_for_win2003
      end
    end
    arch
  end

  # @api private
  def identify_windows_architecture_from_os_name_for_win2003
    arch = nil
    execute("echo '' | wmic os get name | grep x64", :accept_all_exit_codes => true) do |result|
      arch = result.exit_code == 0 ? '64' : '32'
    end
    arch
  end
end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
beaker-2.30.1 lib/beaker/host/windows/pkg.rb
beaker-2.30.0 lib/beaker/host/windows/pkg.rb
beaker-2.29.1 lib/beaker/host/windows/pkg.rb
beaker-2.29.0 lib/beaker/host/windows/pkg.rb
beaker-2.28.0 lib/beaker/host/windows/pkg.rb
beaker-2.27.0 lib/beaker/host/windows/pkg.rb
beaker-2.26.0 lib/beaker/host/windows/pkg.rb
beaker-2.25.0 lib/beaker/host/windows/pkg.rb
beaker-2.24.0 lib/beaker/host/windows/pkg.rb
beaker-2.23.0 lib/beaker/host/windows/pkg.rb
beaker-2.22.0 lib/beaker/host/windows/pkg.rb
beaker-2.21.0 lib/beaker/host/windows/pkg.rb
beaker-2.20.0 lib/beaker/host/windows/pkg.rb
beaker-2.19.0 lib/beaker/host/windows/pkg.rb
beaker-2.18.3 lib/beaker/host/windows/pkg.rb
beaker-2.18.2 lib/beaker/host/windows/pkg.rb
beaker-2.18.1 lib/beaker/host/windows/pkg.rb
beaker-2.18.0 lib/beaker/host/windows/pkg.rb
beaker-2.17.0 lib/beaker/host/windows/pkg.rb
beaker-2.16.0 lib/beaker/host/windows/pkg.rb