mirror of
https://github.com/microsoft/vcpkg.git
synced 2024-12-19 01:40:36 +08:00
81 lines
2.3 KiB
PowerShell
81 lines
2.3 KiB
PowerShell
|
#!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
|
||
|
}
|
||
|
|
||
|
# 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
|
||
|
}
|