Sha256: 2f54c3dc202430e35c771300db4de817e1b12a533aa5fe853057fa80a124100f

Contents?: true

Size: 1.18 KB

Versions: 5

Compression:

Stored size: 1.18 KB

Contents

require 'pe_build/on_machine'

# Download PE installers to a Windows VM
#
# @since 0.14.0
class PEBuild::Cap::StageInstaller::Windows

  extend PEBuild::OnMachine

  # Download an installer to a remote VM
  #
  # @param uri [URI] A URI containing the download source.
  # @param dest_dir [String] The destination directory to download the
  #   installer to.
  #
  # @return [void]
  def self.stage_installer(machine, uri, dest_dir='.')
    filename = File.basename(uri.path)

    unless machine.communicate.test(%Q[If (Test-Path "#{dest_dir}/#{filename}) { Exit 0 } Else { Exit 1 }])
      machine.ui.info I18n.t('pebuild.cap.stage_installer.downloading_installer',
        :url => uri)

      # Setting ServerCertificateValidationCallback to always return true
      # allows us to download from HTTPS sources that present a self-signed
      # certificate. For example, a Puppet Master.
      on_machine(machine, <<-EOS)
$DestDir = (Get-Item -Path "#{dest_dir}").FullName
Write-Host "Downloading #{filename} to: ${DestDir}"

[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
(New-Object System.Net.WebClient).DownloadFile("#{uri}","$DestDir/#{filename}")
EOS
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
vagrant-pe_build-0.19.2 lib/pe_build/cap/stage_installer/windows.rb
vagrant-pe_build-0.19.1 lib/pe_build/cap/stage_installer/windows.rb
vagrant-pe_build-0.19.0 lib/pe_build/cap/stage_installer/windows.rb
vagrant-pe_build-0.18.2 lib/pe_build/cap/stage_installer/windows.rb
vagrant-pe_build-0.18.1 lib/pe_build/cap/stage_installer/windows.rb