mirror of
https://github.com/occ-ai/obs-localvocal
synced 2024-11-08 03:08:07 +00:00
71 lines
2.3 KiB
PowerShell
71 lines
2.3 KiB
PowerShell
function Install-BuildDependencies {
|
|
<#
|
|
.SYNOPSIS
|
|
Installs required build dependencies.
|
|
.DESCRIPTION
|
|
Additional packages might be needed for successful builds. This module contains additional
|
|
dependencies available for installation via winget and, if possible, adds their locations
|
|
to the environment path for future invocation.
|
|
.EXAMPLE
|
|
Install-BuildDependencies
|
|
#>
|
|
|
|
param(
|
|
[string] $WingetFile = "$PSScriptRoot/.Wingetfile"
|
|
)
|
|
|
|
if ( ! ( Test-Path function:Log-Warning ) ) {
|
|
. $PSScriptRoot/Logger.ps1
|
|
}
|
|
|
|
$Prefixes = @{
|
|
'x64' = ${Env:ProgramFiles}
|
|
'x86' = ${Env:ProgramFiles(x86)}
|
|
'arm64' = ${Env:ProgramFiles(arm)}
|
|
}
|
|
|
|
$Paths = $Env:Path -split [System.IO.Path]::PathSeparator
|
|
|
|
$WingetOptions = @('install', '--accept-package-agreements', '--accept-source-agreements')
|
|
|
|
if ( $script:Quiet ) {
|
|
$WingetOptions += '--silent'
|
|
}
|
|
|
|
Log-Group 'Check Windows build requirements'
|
|
Get-Content $WingetFile | ForEach-Object {
|
|
$_, $Package, $_, $Path, $_, $Binary, $_, $Version = $_ -replace ',','' -split " +(?=(?:[^\']*\'[^\']*\')*[^\']*$)" -replace "'",''
|
|
|
|
$Prefixes.GetEnumerator() | ForEach-Object {
|
|
$Prefix = $_.value
|
|
$FullPath = "${Prefix}\${Path}"
|
|
if ( ( Test-Path $FullPath ) -and ! ( $Paths -contains $FullPath ) ) {
|
|
$Paths = @($FullPath) + $Paths
|
|
$Env:Path = $Paths -join [System.IO.Path]::PathSeparator
|
|
}
|
|
}
|
|
|
|
Log-Debug "Checking for command ${Binary}"
|
|
$Found = Get-Command -ErrorAction SilentlyContinue $Binary
|
|
|
|
if ( $Found ) {
|
|
Log-Status "Found dependency ${Binary} as $($Found.Source)"
|
|
} else {
|
|
Log-Status "Installing package ${Package} $(if ( $Version -ne $null ) { "Version: ${Version}" } )"
|
|
|
|
if ( $Version -ne $null ) {
|
|
$WingetOptions += @('--version', ${Version})
|
|
}
|
|
|
|
try {
|
|
$Params = $WingetOptions + $Package
|
|
|
|
winget @Params
|
|
} catch {
|
|
throw "Error while installing winget package ${Package}: $_"
|
|
}
|
|
}
|
|
}
|
|
Log-Group
|
|
}
|