vcpkg/scripts/azure-pipelines/osx/Install-Prerequisites.ps1
nicole mazzuca 397d3d7188
[vcpkg osx ci] update 2020-09-28 (#13799)
* [vcpkg osx ci] update to newer bits

these ones should actually work!

* update vagrantfile

* correct scripts, reformat, add docs

* Finish Get-InternalBaseBox, move archives

In order to avoid people maliciously deleting the boxes,
the archives share and file share are in different users now.

* baseline libqcow to be fixed later

* actually check for the mount point

* fix Install-Prerequisites again

* add +x to Get-InternalBaseBox.ps1

additionally, fix some errors
2020-09-29 16:49:49 -07:00

95 lines
2.8 KiB
PowerShell
Executable File

#!pwsh
#Requires -Version 6.0
<#
.SYNOPSIS
Installs the set of prerequisites for the macOS CI hosts.
.DESCRIPTION
Install-Prerequisites.ps1 installs all of the necessary prerequisites
to run the vcpkg macOS CI in a vagrant virtual machine,
skipping all prerequisites that are already installed.
.PARAMETER Force
Don't skip the prerequisites that are already installed.
.INPUTS
None
.OUTPUTS
None
#>
[CmdletBinding()]
Param(
[Parameter()]
[Switch]$Force
)
Set-StrictMode -Version 2
if (-not $IsMacOS) {
Write-Error 'This script should only be run on a macOS host'
throw
}
Import-Module "$PSScriptRoot/Utilities.psm1"
$Installables = Get-Content "$PSScriptRoot/configuration/installables.json" | ConvertFrom-Json
$Installables.Applications | ForEach-Object {
if (-not (Get-CommandExists $_.TestCommand)) {
Write-Host "$($_.Name) not installed; installing now"
} elseif ($Force) {
Write-Host "$($_.Name) found; attempting to upgrade or re-install"
} else {
Write-Host "$($_.Name) already installed"
return
}
$pathToDmg = "~/Downloads/$($_.Name).dmg"
Get-RemoteFile -OutFile $pathToDmg -Uri $_.DmgUrl -Sha256 $_.Sha256
hdiutil attach $pathToDmg -mountpoint /Volumes/setup-installer
sudo installer -pkg "/Volumes/setup-installer/$($_.InstallerPath)" -target /
hdiutil detach /Volumes/setup-installer
}
$Installables.Brew | ForEach-Object {
$installable = $_
if ($null -eq (Get-Member -InputObject $installable -Name 'Kind')) {
brew install $installable.Name
} else {
switch ($installable.Kind) {
'cask' { brew cask install $installable.Name }
default {
Write-Error "Invalid kind: $_. Expected either empty, or 'cask'."
}
}
}
}
# Install plugins
$installedExtensionPacks = Get-InstalledVirtualBoxExtensionPacks
$Installables.VBoxExtensions | ForEach-Object {
$extension = $_
$installedExts = $installedExtensionPacks | Where-Object { $_.Pack -eq $extension.FullName -and $_.Usable -eq 'true' }
if ($null -eq $installedExts) {
Write-Host "VBox extension: $($extension.Name) not installed; installing now"
} elseif ($Force) {
Write-Host "VBox extension: $($extension.Name) found; attempting to upgrade or re-install"
} else {
Write-Host "VBox extension: $($extension.Name) already installed"
return
}
$pathToExt = "~/Downloads/$($extension.FullName -replace ' ','_').vbox-extpack"
Get-RemoteFile -OutFile $pathToExt -Uri $extension.Url -Sha256 $extension.Sha256 | Out-Null
Write-Host 'Attempting to install extension with sudo; you may need to enter your password'
sudo VBoxManage extpack install --replace $pathToExt
sudo VBoxManage extpack cleanup
}