private/Install-AutToolset.ps1
<#
.SYNOPSIS Companion script used to install the dependencies required for the main package In case of issues with PowerShell Execution Policies, see https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_scripts?view=powershell-7 PS: VSCode has a weird behavior on that topic, use Terminal : https://github.com/PowerShell/vscode-powershell/issues/1217 .DESCRIPTION See documentation for more information : https://github.com/Fleid/asa.unittest This script will first download nuget.exe, the Nuget CLI tool for Windows. See https://docs.microsoft.com/en-us/nuget/install-nuget-client-tools#nugetexe-cli After that nuget.exe will be invoked to install the required packages from nuget. Finally the script will invoke npm to install the npm packages. These packages will be installed globally (npm install -g). If npm is not available, please download node.js. See https://nodejs.org/en/download/ .PARAMETER installPath Path to the folder in the fixture that will contain the dependencies, usually (solutionPath\asaProjectName.Tests\2_act) .PARAMETER npmPackages List of npm packages to install .PARAMETER nugetPackages List of nuget packages to install .EXAMPLE Install-AutToolset -installPath C:\Users\fleide\Repos\asa.unittest\examples\ASAHelloWorld.Tests\2_act -npmpackages jsondiffpatch -nugetpackages Microsoft.Azure.StreamAnalytics.CICD #> Function Install-AutToolset{ [CmdletBinding()] param ( [string]$installPath = $(Throw "-installPath is required"), [string[]]$npmPackages, # = @("jsondiffpatch"), [string[]]$nugetPackages # = @("Microsoft.Azure.StreamAnalytics.CICD") ) BEGIN { if (-not (Test-Path $installPath)) {New-Item -ItemType Directory -Path $installPath | Out-Null} } PROCESS { if ($nugetPackages.Count -gt 0){ if (-not (Test-Path -Path "$installPath\nuget.exe" -PathType Leaf)){ # Windows - get nuget.exe from https://www.nuget.org/downloads Write-Verbose "001 - Download nuget.exe" Invoke-WebRequest ` -Uri https://dist.nuget.org/win-x86-commandline/latest/nuget.exe ` -OutFile (Join-Path $installPath "nuget.exe") | Out-Null } foreach ($nugetPackage in $nugetPackages){ Write-Verbose "002 - Installing nuget package : $nugetPackage" Invoke-External -l "$installPath\nuget.exe" install $nugetPackage -OutputDirectory $installPath | Out-Null } } #IF nuget if ($npmPackages.Count -gt 0){ foreach ($npmPackage in $npmPackages){ Write-Verbose "003 - Installing npm package : $npmPackage" Invoke-External -l "npm" install -g $npmPackage | Out-Null } } #IF npm } # PROCESS END {} } |