Dependency/Install-DependencyNuget.ps1


function Install-DependencyNuget {
    [CmdletBinding()]
    Param(
        [Parameter(Mandatory)]
        [string]
        # The path to the nuget.exe
        $NugetPath,

        [Parameter(Mandatory, ParameterSetName = 'NameVersion')]
        [string]
        # The name of the dependency as set in the dependency config file
        $Name,

        [Parameter(Mandatory, ParameterSetName = 'NameVersion')]
        [string]
        # The version
        $Version,

        [Parameter(Mandatory, ParameterSetName = 'PackageConfig')]
        [string]
        # The name of the dependency as set in the dependency config file
        $ConfigPath,

        [Parameter(Mandatory)]
        [string]
        # The destination folder to install to. This should end in "\Packages"
        $Destination#,

        # [Parameter(Position, Mandatory)]
        # [ValidateSet('Install','Initialise')]
        # [string[]]
        # # Indicates if we should install the dependency or also initialise in the current session (sometimes you want to delay this due to DLL hell)
        # $Run = @('Install')
    )
    # Ensure we have the source that we need
    Write-Verbose "$NugetPath sources list"
    $sources = & $NugetPath sources list
    if (-not ($sources -match 'nuget.org')) {
        Write-Verbose "$NugetPath sources Add -Name 'nuget.org' -Source 'https://api.nuget.org/v3/index.json'"
        $null = & $NugetPath sources Add -Name 'nuget.org' -Source 'https://api.nuget.org/v3/index.json'
    }

    # Now get the packages
    New-Item -Path $Destination -ItemType directory -Force 1> $null

    if ($PSCmdlet.ParameterSetName -eq 'NameVersion') {
        Write-Verbose "$NugetPath install '$Name' -version '$Version' -OutputDirectory '$Destination' -ExcludeVersion -PackageSaveMode nuspec -ForceEnglishOutput -Source nuget.org -NonInteractive -verbosity detailed"
        & $NugetPath install $Name -version $Version -OutputDirectory $Destination -ExcludeVersion -PackageSaveMode nuspec -ForceEnglishOutput -Source nuget.org -NonInteractive -verbosity detailed
    }
    else {
        Write-Verbose "$NugetPath install '$ConfigPath' -OutputDirectory '$Destination' -ExcludeVersion -PackageSaveMode nuspec -ForceEnglishOutput -Source nuget.org -NonInteractive -verbosity detailed"
        & $NugetPath install $ConfigPath -OutputDirectory $Destination -ExcludeVersion -PackageSaveMode nuspec -ForceEnglishOutput -Source nuget.org -NonInteractive -verbosity detailed
    }
}