Lib/helper_nuget.psm1
|
<#
.SYNOPSIS Download Library. Install Nuget .DESCRIPTION Download Library. Install Nuget. This will install a stand-alone version of nuget.exe Additionally Azure Artifact Credeital Provides is installed. .NOTES Author : hillesheim@n-dimensions.de Version : 1.3 DateLastChanged : 2024-11-11 #> Param ( [Switch] $Auto ) Write-Host "Load nested module 'helper_nuget' (1.3.) ... "; #region begin DECLARATION #region begin TYPES #endregion #region begin USER_VARIABLES #endregion #region begin SYSTEM_VARIABLES [String] $psScriptFilePath = $MyInvocation.MyCommand.Definition; [String] $psScriptFolderPath = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent; [String] $defaultUrlArtifactsCredproviderPsScript = "https://aka.ms/install-artifacts-credprovider.ps1"; #endregion #endregion #region FUNCTIONS_PUBLIC Function Install-Nuget { Write-Host ("Install nuget ... ") -ForegroundColor Green; Initialize-NugetClient ` -NugetSettings $Global:nugetSettings; Get-NugetFromWeb ` -NugetSettings $Global:nugetSettings; Get-ArtifactCredProvider ` -ArtifactSettings $Global:artifactSettings; Add-NugetEnvPath ` -NugetSettings $Global:nugetSettings; } #endregion #region FUNCTIONS_PRIVATE Function Initialize-NugetClient { Param( [NugetSettings] $NugetSettings ) Write-Host ( "Initialize nuget client environment ... " ); [String[]] $folders = @( $NugetSettings.NugetProgramFolder, $NugetSettings.NugetPackagesInstallFolder ) $folders ` | ForEach-Object { Write-Host ("- Check for folder '{0}' ... " -f $_) If ( -not ( Test-Path $_ ) ) { New-Item -Path $_ -ItemType Directory; } Else { Write-Host " No action required"; } } } Function Add-NugetEnvPath { Param ( [NugetSettings] $NugetSettings ) [String] $newPath = $NugetSettings.NugetProgramFolder; Write-Host ( "Update env:path variable. Add '{0}'" -f $newPath ); # Check if new path already exists [String[]] $pathItems = [Environment]::GetEnvironmentVariable("Path", "Machine").Split(";"); If ( $pathItems.Contains($newPath) ) { Write-Host ( "The environment variable already contains the new path. Abort." ); Return; } Else { # Add path [String] $currentPathValue = [Environment]::GetEnvironmentVariable("Path", "Machine"); If ( -not ( $currentPathValue.EndsWith(";") ) ) { $currentPathValue += ";"; } [String] $newPathValue = $currentPathValue + $newPath + ";"; [Environment]::SetEnvironmentVariable("Path", $newPathValue, "Machine"); } } Function Get-ArtifactCredProvider { Param( [ArtifactSettings] $ArtifactSettings ) Write-Host ("Get azure artifact credential provider from web ... ") -ForegroundColor Green; Invoke-Expression "& { $(Invoke-RestMethod https://aka.ms/install-artifacts-credprovider.ps1) } -AddNetfx"; } Function Get-NugetFromWeb { Param ( [NugetSettings] $NugetSettings ) Write-Host ( "Get nuget.exe (StandAlone) from web ... " ) -ForegroundColor Green; Write-Host ( "Save nuget.exe to nuget program files folder" -f $NugetSettings.NugetExeDownloadUrl, $NugetSettings.NugetProgramFolder ); # Action Invoke-WebRequest ` -Uri $NugetSettings.NugetExeDownloadUrl ` -OutFile ([System.IO.Path]::Combine($NugetSettings.NugetProgramFolder, "nuget.exe")); # Return Nuget.Config file paths Write-Host ( "'Nuget.Config' file path 1 (User) = '{0}'" -f "%appdata%\NuGet" ); Write-Host ( "'Nuget.Config' file path 2 (System) = '{0}'" -f "%ProgramFiles(x86)%\NuGet\Config" ); } #endregion #endregion #region EXPORT Export-ModuleMember -Function 'Install-Nuget'; #endregion |